Class: Hiera::Backend::Secrets_manager_backend

Inherits:
Object
  • Object
show all
Defined in:
lib/hiera/backend/secrets_manager_backend.rb

Instance Method Summary collapse

Constructor Details

#initializeSecrets_manager_backend

Returns a new instance of Secrets_manager_backend.



4
5
6
7
8
# File 'lib/hiera/backend/secrets_manager_backend.rb', line 4

def initialize
  require 'aws-sdk-secretsmanager'
  @config = Config
  @client = create_client
end

Instance Method Details

#lookup(key, scope, order_override, resolution_type) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/hiera/backend/secrets_manager_backend.rb', line 10

def lookup(key, scope, order_override, resolution_type)
  answer = nil

  if @client.nil?
    Hiera.debug('Key lookup failed. AWS Secrets Manager backend is in a bad state.')
    return answer
  end

  if contains_illegal_characters?(key)
    Hiera.debug("#{key} contains illegal characters. Skipping lookup.")
    return answer
  end

  key_to_query = format_key(key, scope, Config[:secrets_manager])

  begin
    answer = @client.get_secret_value(secret_id: key_to_query)['secret_string']
  rescue Aws::SecretsManager::Errors::ResourceNotFoundException => error
    Hiera.debug("#{key} not found: #{error.message}")
  rescue StandardError => error
    Hiera.debug("AWS Secrets Manager Error: #{error}")
  end

  answer
end