首页 > 解决方案 > Terraform AWS Provider:SecretsManager 无法应用,因为版本已被删除

问题描述

我们有一个创建过一次的 AWS SecretsManager 密钥。该秘密将由外部作业每小时更新一次。我有一个问题,有时 terraform 计划/应用会失败并显示以下消息:

AWS 提供商 2.48

    Error: Error refreshing state: 1 error occurred:

        * module.xxx.xxx: 1 error occurred:

        * module.xxx.aws_secretsmanager_secret_version.xxx: 
    aws_secretsmanager_secret_version.xxx: error reading Secrets Manager Secret Version: InvalidRequestException: You can't perform this operation on secret version 68AEABC3-34BE-4723-8BF5-469A44F9B1D9 because it was deleted.

我们尝试了两种解决方案:1)通过 aws cli 强制删除整个秘密,但这具有副作用,我们的依赖资源之一也将被重新创建(ecs 模板定义取决于该秘密)。这可行,但我们不希望重新创建 ecs 事物的副作用。2) 手动编辑后端 .tfstate 文件并设置当前 AWS 密钥版本。然后再次运行计划。

这两种解决方案在某种程度上似乎都很老套。解决此问题的最佳方法是什么?

标签: amazon-web-servicesterraformaws-secrets-manager

解决方案


您可以在运行 a或terraform import之前使用来协调状态差异。planapply

在您的情况下,这看起来像:

terraform import module.xxx.aws_secretsmanager_secret_version.xxx arn:aws:secretsmanager:some_region:some_account_id:secret:example-123456|xxxxx-xxxxxxx-xxxxxxx-xxxxx

推荐阅读