使用 secretsmanager Terraform 设置 aws 访问密钥和密钥
Set aws access key and secret key with secretsmanager Terraform
我有以下 terraform 模板,它创建用户、访问密钥并存储在秘密管理器中。
resource "aws_iam_user" "test" {
name = "test"
}
resource "aws_iam_access_key" "test" {
user = aws_iam_user.test.name
}
resource "aws_secretsmanager_secret" "test" {
name = "credentials"
description = "My credentials"
}
resource "aws_secretsmanager_secret_version" "test" {
secret_id = "${aws_secretsmanager_secret.test.id}"
secret_string = "{\"AccessKey\": data.aws_iam_access_key.test.id,\"SecretAccessKey\": data.aws_iam_access_key.test.secret}"
}
secret_string 中的值未设置。这是正确的用法吗?请帮我设置正确的值
secret_string = "{\"AccessKey\": data.aws_iam_access_key.test.id,\"SecretAccessKey\": data.aws_iam_access_key.test.secret}"
您可以将 secret_string
参数值构造为 Map 类型,然后使用 Terraform 的原生 jsonencode
函数将其编码为 JSON 字符串,以确保将值正确传递给论据。您的资源看起来像:
resource "aws_secretsmanager_secret_version" "test" {
secret_id = "${aws_secretsmanager_secret.test.id}"
secret_string = jsonencode({"AccessKey" = aws_iam_access_key.test.id, "SecretAccessKey" = aws_iam_access_key.test.secret})
}
另请注意,aws_iam_access_key.test.id
和 aws_iam_access_key.test.secret
是从资源而不是数据导出的属性,因此需要从它们的命名空间中删除 data
前缀。
我有以下 terraform 模板,它创建用户、访问密钥并存储在秘密管理器中。
resource "aws_iam_user" "test" {
name = "test"
}
resource "aws_iam_access_key" "test" {
user = aws_iam_user.test.name
}
resource "aws_secretsmanager_secret" "test" {
name = "credentials"
description = "My credentials"
}
resource "aws_secretsmanager_secret_version" "test" {
secret_id = "${aws_secretsmanager_secret.test.id}"
secret_string = "{\"AccessKey\": data.aws_iam_access_key.test.id,\"SecretAccessKey\": data.aws_iam_access_key.test.secret}"
}
secret_string 中的值未设置。这是正确的用法吗?请帮我设置正确的值
secret_string = "{\"AccessKey\": data.aws_iam_access_key.test.id,\"SecretAccessKey\": data.aws_iam_access_key.test.secret}"
您可以将 secret_string
参数值构造为 Map 类型,然后使用 Terraform 的原生 jsonencode
函数将其编码为 JSON 字符串,以确保将值正确传递给论据。您的资源看起来像:
resource "aws_secretsmanager_secret_version" "test" {
secret_id = "${aws_secretsmanager_secret.test.id}"
secret_string = jsonencode({"AccessKey" = aws_iam_access_key.test.id, "SecretAccessKey" = aws_iam_access_key.test.secret})
}
另请注意,aws_iam_access_key.test.id
和 aws_iam_access_key.test.secret
是从资源而不是数据导出的属性,因此需要从它们的命名空间中删除 data
前缀。