Just map the secrets returned from AWS

This commit is contained in:
Nick Hammond
2024-12-12 05:09:12 -07:00
parent e464177349
commit ba567e0474

View File

@@ -6,15 +6,7 @@ class Kamal::Secrets::Adapters::AwsSecretsManager < Kamal::Secrets::Adapters::Ba
def fetch_secrets(secrets, account:, session:)
{}.tap do |results|
secrets = JSON.parse(get_from_secrets_manager(secrets, account: account))
if secrets["Errors"].present?
first_error = secrets["Errors"].first
raise RuntimeError, "#{first_error['SecretId']}: #{first_error['Message']}"
end
secrets["SecretValues"].each do |secret|
get_from_secrets_manager(secrets, account: account).each do |secret|
secret_name = secret["Name"]
secret_string = JSON.parse(secret["SecretString"])
@@ -30,6 +22,12 @@ class Kamal::Secrets::Adapters::AwsSecretsManager < Kamal::Secrets::Adapters::Ba
def get_from_secrets_manager(secrets, account:)
`aws secretsmanager batch-get-secret-value --secret-id-list #{secrets.map(&:shellescape).join(" ")} --profile #{account.shellescape}`.tap do |secrets|
raise RuntimeError, "Could not read #{secrets} from AWS Secrets Manager" unless $?.success?
secrets = JSON.parse(secrets)
return secrets["SecretValues"] unless secrets["Errors"].present?
raise RuntimeError, secrets["Errors"].map { |error| "#{error['SecretId']}: #{error['Message']}" }.join(", ")
end
end