module EnvParameterStore
Constants
- DEFAULT_ENV_FILENAME
- VERSION
Public Class Methods
inject(filename = DEFAULT_ENV_FILENAME)
click to toggle source
Inject secrets from AWS Systems Manager Parameter Store to `ENV`. secrets list is listed on `.secret`. EnvParameterStore will be overwrite if corresponding value exists @param [String] filename @return [Hash] env
# File lib/env_parameter_store.rb, line 43 def inject(filename = DEFAULT_ENV_FILENAME) filename = File.expand_path(filename.to_s) config = load_config(filename) secrets = fetch_secrets(config) ENV.update(secrets) end
Private Class Methods
fetch_secrets(config)
click to toggle source
# File lib/env_parameter_store.rb, line 61 def fetch_secrets(config) client = Aws::SSM::Client.new resp = client.get_parameters( names: config.parameter_names, with_decryption: true, ) unless resp.invalid_parameters.empty? raise InvalidParameterError.new(resp.invalid_parameters) end resp.parameters.each_with_object({}) do |parameter, secrets| key = config.to_name(parameter.name) secrets[key] = parameter.value end end
load_config(filename)
click to toggle source
# File lib/env_parameter_store.rb, line 52 def load_config(filename) config_json = JSON.parse(File.read(filename)) EnvParameterStore::Config.new(config_json) rescue Errno::ENOENT raise NoSuchFileError.new(filename) rescue JSON::ParserError raise InvalidJSONError.new(filename) end