use*_*mda 7 terraform aws-secrets-manager
我有一个秘密存储在我可以访问 arn 的秘密管理器中。我想从此 arn 检索值并在 terraform 中使用它,我该如何实现?
我从 terraform 网站上找到了这个
data "aws_secretsmanager_secret" "by-arn" {
arn = "arn:aws:secretsmanager:us-east-1:123456789012:secret:example-123456"
}
Run Code Online (Sandbox Code Playgroud)
然后我如何检索该值?意思是什么是“ get-value"EC2 istance 在 terraform 中的等价物?
Suf*_*ori 14
请注意,Terraform 0.14添加了在控制台输出中编辑敏感值的功能。
因此,如果您使用 Terraform > 0.14,则必须使用nonsensitive函数来公开实际的秘密值。
nonsensitive函数接受一个敏感值并返回该值的副本,并删除敏感标记,从而暴露实际值。
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))
}
Run Code Online (Sandbox Code Playgroud)
pab*_*xio 11
这是一个例子。默认情况下,aws_secretsmanager_secret_version根据AWSCURRENT标签检索信息(也就是最新版本):
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
}
Run Code Online (Sandbox Code Playgroud)
并用于data.aws_secretsmanager_secret_version.current.secret_string获取秘密。如果您想检索该秘密中的特定值,就像DATABASE_URL您可以使用内置函数一样jsondecode:
jsondecode(data.aws_secretsmanager_secret_version.current.secret_string)["DATABASE_URL"]
Run Code Online (Sandbox Code Playgroud)
小智 1
aws_secretsmanager_secret是一个 AWS Secretsmanager 密钥对象,但一个密钥可以有多个版本,并且值存储在版本中,而不是存储在父密钥对象中。
所以这就是您正在寻找的: https: //www.terraform.io/docs/providers/aws/r/secretsmanager_secret_version.html(它描述了如何获取秘密版本的值,即aws_secretsmanager_secret_version.example.secret_string)。
| 归档时间: |
|
| 查看次数: |
5896 次 |
| 最近记录: |