1
0
Fork 0
psenv/lib/psenv/retriever.rb

55 lines
1.0 KiB
Ruby

require "aws-sdk-ssm"
module Psenv
class RetrieveError < StandardError; end
class Parameter
attr_reader :name, :value
def initialize(parameter)
@name = parameter[:name].split("/").last
@value = parameter[:value]
@type = parameter[:type]
@version = parameter[:version]
end
end
class Retriever
def initialize(path)
@path = path
end
def call
parameters
.map { |parameter| Parameter.new(parameter) }
.map { |parameter| [parameter.name, parameter.value] }
.to_h
end
def self.call(path)
new(path).call
end
private
def ssm
@ssm ||= Aws::SSM::Client.new
end
def parameters
parameters = []
response = ssm.get_parameters_by_path(path: @path, with_decryption: true)
parameters << response.parameters
while response.next_page?
response = response.next_page
parameters << response.parameters
end
parameters.flatten
rescue => error
raise RetrieveError, error
end
end
end