如果秘密管理器资源存在,如何告诉 Terraform 跳过它?

How to tell Terraform to skip the secret manager resource if it exists?

我的想法是我想使用 Terraform 资源 aws_secretsmanager_secret 只创建三个秘密(不是工作区指定的秘密),一个用于开发环境,一个用于预生产环境,第三个用于生产环境。

类似于:

resource "aws_secretsmanager_secret" "dev_secret" {
  name = "example-secret-dev"
}

resource "aws_secretsmanager_secret" "preprod_secret" {
  name = "example-secret-preprod"
}

resource "aws_secretsmanager_secret" "prod_secret" {
  name = "example-secret-prod"
}

但是在创建它们之后,我不想每次都覆盖它们 运行 'Terraform apply',有没有办法告诉 Terraform 是否存在任何秘密,跳过创建秘密并且不覆盖?

我看过 this page 但仍然没有明确的解决方案,任何建议将不胜感激。

如果您在控制台中手动创建或使用 AWS SDK,它将不会覆盖 密钥。 aws_secretsmanager_secret 仅创建秘密,但不创建其值。要设置值,您必须使用 aws_secretsmanager_secret_version.

总之,这是您可以轻松测试自己的东西。只需 运行 您的带有秘密的代码,在 AWS 控制台中更新其值,然后重新 运行 terraform 应用。您应该看不到密钥值的变化。