Class: ParamStore::Adapters::SecretsManager

Inherits:
Object
  • Object
show all
Defined in:
lib/param_store/adapters/secrets_manager.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(default_secret_id: nil) ⇒ SecretsManager

Returns a new instance of SecretsManager.



6
7
8
# File 'lib/param_store/adapters/secrets_manager.rb', line 6

def initialize(default_secret_id: nil)
  @default_secret_id = default_secret_id
end

Instance Attribute Details

#default_secret_idObject (readonly)

Returns the value of attribute default_secret_id.



4
5
6
# File 'lib/param_store/adapters/secrets_manager.rb', line 4

def default_secret_id
  @default_secret_id
end

Instance Method Details

#fetch(key, *args, secret_id: nil, version_id: nil, version_stage: nil, &block) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
# File 'lib/param_store/adapters/secrets_manager.rb', line 10

def fetch(key, *args, secret_id: nil, version_id: nil, version_stage: nil, &block)
  get_key = secret_id || default_secret_id || key

  if cache[get_key].nil? &&
     string = get_secret_value(get_key, version_id, version_stage)
    cache[get_key] = JSON.parse(string)
  end

  (
    secret_id.nil? && default_secret_id.nil? ? cache : cache[get_key]
  ).fetch(key, *args, &block)
end

#fetch_all(*keys, **opts) ⇒ Object



23
24
25
26
27
28
29
30
# File 'lib/param_store/adapters/secrets_manager.rb', line 23

def fetch_all(*keys, **opts)
  # poor man's fetch all
  # I couldn't find a batch get for secrets manager :/
  keys.map do |key|
    value = fetch(key, {}, **opts)
    value&.empty? ? {} : { key =>  value }
  end.inject(:merge)
end