class Blinkist::Config::AwsSsmAdapter
Constants
- DEFAULT_PREFIX
Public Class Methods
new(env, app_name)
click to toggle source
Calls superclass method
Blinkist::Config::Adapter::new
# File lib/blinkist/config/adapters/aws_ssm_adapter.rb, line 9 def initialize(env, app_name) super env, app_name @items_cache = {} @client = Aws::SSM::Client.new end
Public Instance Methods
get(key, default=nil, scope: nil)
click to toggle source
# File lib/blinkist/config/adapters/aws_ssm_adapter.rb, line 16 def get(key, default=nil, scope: nil) prefix = prefix_for(scope) query_ssm_parameter prefix + key rescue Aws::SSM::Errors::ParameterNotFound default end
preload(scope: nil)
click to toggle source
# File lib/blinkist/config/adapters/aws_ssm_adapter.rb, line 24 def preload(scope: nil) query_all_ssm_parameters prefix_for(scope) end
Private Instance Methods
prefix_for(scope)
click to toggle source
# File lib/blinkist/config/adapters/aws_ssm_adapter.rb, line 30 def prefix_for(scope) if scope.nil? DEFAULT_PREFIX + @app_name + "/" else DEFAULT_PREFIX + scope + "/" end end
query_all_ssm_parameters(prefix)
click to toggle source
# File lib/blinkist/config/adapters/aws_ssm_adapter.rb, line 45 def query_all_ssm_parameters(prefix) parameters = [] next_token = nil # SSM limits the results and we need to loop loop do result = @client.get_parameters_by_path( path: prefix, recursive: true, with_decryption: true, next_token: next_token ) parameters += result.parameters next_token = result.next_token break if next_token.nil? end parameters.map do |parameter| @items_cache[parameter.name] = parameter.value end end
query_ssm_parameter(name)
click to toggle source
# File lib/blinkist/config/adapters/aws_ssm_adapter.rb, line 38 def query_ssm_parameter(name) @items_cache[name] ||= @client.get_parameter( name: name, with_decryption: true ).parameter.value end