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