class Securenv::Client
Attributes
app[R]
stage[R]
Public Class Methods
new(app:, stage:)
click to toggle source
# File lib/securenv/client.rb, line 5 def initialize(app:, stage:) @app = app @stage = stage end
Public Instance Methods
get(variable:)
click to toggle source
# File lib/securenv/client.rb, line 31 def get(variable:) parameter_name = parameter_name_for(variable) resp = ssm_client.get_parameter({ name: parameter_name, with_decryption: true }) parameter = Parameter.new( name: parameter_name, version: resp.parameter.version, value: resp.parameter.value ) return parameter rescue Aws::SSM::Errors::ParameterNotFound raise ParameterNotFoundError.new "#{variable} is not set for app: #{app} and stage: #{stage}" end
list()
click to toggle source
# File lib/securenv/client.rb, line 64 def list resp = ssm_client.get_parameters_by_path({ path: parameter_path, with_decryption: true }) parameters = resp.parameters.map do |param| Parameter.new( name: param.name, version: param.version, value: param.value ) end return parameters end
parameter_name_for(variable)
click to toggle source
# File lib/securenv/client.rb, line 91 def parameter_name_for(variable) "#{parameter_path}/#{variable}" end
parameter_path()
click to toggle source
# File lib/securenv/client.rb, line 87 def parameter_path "/#{app}/#{stage}" end
populate_env()
click to toggle source
# File lib/securenv/client.rb, line 80 def populate_env parameters = list parameters.each do |param| ENV[param.var_name] = param.value end end
set(variable:, value:)
click to toggle source
# File lib/securenv/client.rb, line 10 def set(variable:, value:) parameter_name = parameter_name_for(variable) resp = ssm_client.put_parameter({ name: parameter_name, description: "Set via securenv", value: value, type: "SecureString", #key_id: "ParameterKeyId", overwrite: true, tier: "Standard" # accepts Standard, Advanced, Intelligent-Tiering }) parameter = Parameter.new( name: parameter_name, version: resp.version, value: value ) return parameter end
ssm_client()
click to toggle source
# File lib/securenv/client.rb, line 95 def ssm_client @ssm_client = Aws::SSM::Client.new end
unset(variable:)
click to toggle source
# File lib/securenv/client.rb, line 48 def unset(variable:) parameter_name = parameter_name_for(variable) ssm_client.delete_parameter({ name: parameter_name }) parameter = Parameter.new( name: parameter_name, version: nil, value: nil ) return parameter rescue Aws::SSM::Errors::ParameterNotFound raise ParameterNotFoundError.new "#{variable} is not set for app: #{app} and stage: #{stage}" end