class EnvConfiguration::Adapter::AwsSsmParameterStoreAdapter

Public Class Methods

new(options={}) click to toggle source
Calls superclass method
# File lib/env_configuration/adapter/aws_ssm_parameter_store_adapter.rb, line 5
def initialize(options={})
  super(options)
  
end

Public Instance Methods

access_key_id() click to toggle source
# File lib/env_configuration/adapter/aws_ssm_parameter_store_adapter.rb, line 19
def access_key_id
  @options[:access_key_id] || EnvConfiguration.configuration.aws_access_key_id
end
client() click to toggle source
# File lib/env_configuration/adapter/aws_ssm_parameter_store_adapter.rb, line 10
def client
  aws_options = {
    access_key_id: access_key_id,
    secret_access_key: secret_access_key,
    region: region,
  }
  @client ||= Aws::SSM::Client.new(@options)
end
fetch_configs(&block) click to toggle source
# File lib/env_configuration/adapter/aws_ssm_parameter_store_adapter.rb, line 47
def fetch_configs(&block)
  next_token = nil
  result = {}

  while(true)

    fetch_options = {
      path: path,
      with_decryption: false,
      recursive: true,
      max_results: 10
    }

    fetch_options[:next_token] = next_token if next_token

    response = client.get_parameters_by_path(fetch_options)

    items = sanitize_configs(response.parameters, &block)
    result.merge!(items)

    next_token = response.next_token
    break if next_token.nil?
  end

  result
end
load() click to toggle source
# File lib/env_configuration/adapter/aws_ssm_parameter_store_adapter.rb, line 37
def load
  # fetch_configs do |item|
  #   ENV["#{item[:name]}"] = item[:value]
  # end

  configs = fetch_configs
  ENV.update(configs)
  configs
end
path() click to toggle source
# File lib/env_configuration/adapter/aws_ssm_parameter_store_adapter.rb, line 31
def path
  path_value = @options[:path] || EnvConfiguration.configuration.aws_path
  raise ":path options is required for example /staging" if path_value.nil?
  path_value
end
region() click to toggle source
# File lib/env_configuration/adapter/aws_ssm_parameter_store_adapter.rb, line 27
def region
  @options[:region] || EnvConfiguration.configuration.aws_region
end
sanitize_configs(parameters) { |item| ... } click to toggle source
# File lib/env_configuration/adapter/aws_ssm_parameter_store_adapter.rb, line 74
def sanitize_configs(parameters, &block)
  items = {}
  parameters.each do |param|
    name  = param.name.gsub("#{path}/", '')
    value = param.value
    item = {name: name, value: value}
    items[name] = value
    yield(item) if block_given?
  end
  items
end
secret_access_key() click to toggle source
# File lib/env_configuration/adapter/aws_ssm_parameter_store_adapter.rb, line 23
def secret_access_key
  @options[:secret_access_key] || EnvConfiguration.configuration.aws_secret_access_key
end