Tengo un secreto almacenado en el administrador de secretos al que tengo acceso al arn. Quiero recuperar el valor de este arn y usarlo en terraform ¿cómo puedo lograr esto?
Encontré esto en el sitio web de terraform
data "aws_secretsmanager_secret" "by-arn" { arn = "arn:aws:secretsmanager:us-east-1:123456789012:secret:example-123456" } ¿Cómo recupero el valor? Es decir, ¿cuál es el equivalente de " get-value" en terraform para una instancia de EC2?
Aquí hay un ejemplo. De forma predeterminada, aws_secretsmanager_secret_version recupera información basada en la etiqueta AWSCURRENT (también conocida como la última versión):
data "aws_secretsmanager_secret" "secrets" { arn = "arn:aws:secretsmanager:us-east-1:123456789012:secret:my_secrety_name-123456" } data "aws_secretsmanager_secret_version" "current" { secret_id = data.aws_secretsmanager_secret.secrets.id } Y use data.aws_secretsmanager_secret_version.current.secret_string para obtener el secreto. Si desea recuperar un valor específico dentro de ese secreto como DATABASE_URL , puede usar la función jsondecode :
jsondecode(data.aws_secretsmanager_secret_version.current.secret_string)["DATABASE_URL"]Tenga en cuenta que Terraform 0.14 agregó la capacidad de redactar valores confidenciales en la salida de la consola.
Por lo tanto, si usa Terraform > 0.14, tendrá que usar una función nonsensitive para exponer el valor secreto real.
nonsensitive función no sensible toma un valor sensible y devuelve una copia de ese valor con la marca sensible eliminada, exponiendo así el valor real.
data "aws_secretsmanager_secret" "secrets" { arn = "arn:aws:secretsmanager:us-east-1:123456789012:secret:my_secrety_name-123456" } data "aws_secretsmanager_secret_version" "current" { secret_id = data.aws_secretsmanager_secret.secrets.id } output "sensitive_example_hash" { value = jsondecode(nonsensitive(data.aws_secretsmanager_secret_version.current.secret_string)) }aws_secretsmanager_secret es un objeto secreto de AWS secretsmanager, pero un secreto puede tener varias versiones y los valores se almacenan en las versiones, no en el objeto secreto principal.
Así que esto es lo que está buscando en su lugar: https://www.terraform.io/docs/providers/aws/r/secretsmanager_secret_version.html (y describe cómo obtener el valor de la versión secreta, es decir, aws_secretsmanager_secret_version.example.secret_string ).