Module: MovableInk::AWS::SSM

Included in:
MovableInk::AWS
Defined in:
lib/movable_ink/aws/ssm.rb

Instance Method Summary collapse

Instance Method Details

#extract_parameters(parameters, path) ⇒ Object



34
35
36
37
38
# File 'lib/movable_ink/aws/ssm.rb', line 34

def extract_parameters(parameters, path)
  parameters.map do |param|
    [ param.name.gsub("#{path}/", ''), param.value ]
  end.to_h
end

#get_role_secrets(environment: mi_env, role:) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
# File 'lib/movable_ink/aws/ssm.rb', line 22

def get_role_secrets(environment: mi_env, role:)
  path = "/#{environment}/#{role}"
  run_with_backoff do
    ssm.get_parameters_by_path(
      path: path,
      with_decryption: true
    ).inject({}) do |secrets, resp|
      secrets.merge!(extract_parameters(resp.parameters, path))
    end
  end
end

#get_secret(environment: mi_env, role:, attribute:) ⇒ Object



8
9
10
11
12
13
14
15
16
17
18
19
20
# File 'lib/movable_ink/aws/ssm.rb', line 8

def get_secret(environment: mi_env, role:, attribute:)
  run_with_backoff do
    begin
      resp = ssm.get_parameter(
                name: "/#{environment}/#{role}/#{attribute}",
                with_decryption: true
              )
      resp.parameter.value
    rescue Aws::SSM::Errors::ParameterNotFound => e
      nil
    end
  end
end

#ssmObject



4
5
6
# File 'lib/movable_ink/aws/ssm.rb', line 4

def ssm
  @ssm_client ||= Aws::SSM::Client.new(region: 'us-east-1')
end