lib/secrets_manager_provider.ex
defmodule SecretsManagerProvider do
@moduledoc """
AWS Secrets Manager ConfigProvider for Elixir Releases.
"""
@behaviour Config.Provider
alias SecretsManagerProvider.Transformer
alias SecretsManagerProvider.Configuration
alias SecretsManagerProvider.AwsClient
alias SecretsManagerProvider.HttpClient
alias SecretsManagerProvider.Decoder
@impl true
def init(args) do
args
|> Configuration.new()
|> HttpClient.init()
|> AwsClient.init()
end
@impl true
def load(config, configuration) do
secret_config =
configuration
|> AwsClient.get_secrets()
|> Decoder.decode!(configuration)
|> Transformer.to_keyword()
Config.Reader.merge(config, secret_config)
end
end