使用 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.idaws_iam_access_key.test.secret 是从资源而不是数据导出的属性,因此需要从它们的命名空间中删除 data 前缀。