如何在 terraform 应用期间忽略重复资源错误?

Kan*_*kaM 8 terraform terraform-provider-aws

我正在尝试使用重新应用我的更改terraform apply,但是当我再次执行此操作时,它会给我错误,资源已存在并停止部署。

例子:

Error: AlreadyExistsException: An alias with the name arn:aws:kms:us-east-1:490449857273:alias/continuedep-cmk-us-east-1 already exists
        status code: 400, request id: 4447fd20-d33b-4c87-891e-cc5e09cc6108

  on ../../../modules/kms_cmk/main.tf line 11, in resource "aws_kms_alias" "keyalias":
  11: resource "aws_kms_alias" "keyalias" {



Error: Error creating DB Subnet Group: DBSubnetGroupAlreadyExists: The DB subnet group 'continuedep-sbg' already exists.
        status code: 400, request id: 97d662b6-79d4-4fde-aaf7-a2f3e5a0bd9e

  on ../../../modules/rds-postgres/main.tf line 2, in resource "aws_db_subnet_group" "generic_db_subnet_group":
   2: resource "aws_db_subnet_group" "generic_db_subnet_group" {
Run Code Online (Sandbox Code Playgroud)

同样,我在许多其他现有资源中遇到错误。我想避免/忽略此类错误并继续我的部署。

我还可以使用什么其他方式从中间中断的地方重新启动我的 terraform 资源部署。

我的地形版本是: Terraform v0.12.9

小智 5

这些错误由 Terraform 提供程序调用的 API 返回。

造成这种情况的可能原因可能是:

  • 您(或其他人)已执行您的 Terraform 代码,并且您没有共享/更新状态
  • 有人手动创建了它们
  • Terraform 销毁失败,删除了 API 的资源,但未能保存更新状态

解决方案取决于您的需要。你可以:

  1. 从 Terraform 代码中删除这些资源以停止使用它来管理它们
  2. 从 API(云提供商)删除这些资源并使用 Terraform 重新创建它们
  3. 对这些资源执行 terraform 导入,并删除尝试重新创建它们的 terraform 代码(不推荐)
  4. 用于terraform apply --target=xxx仅申请您需要申请的资源(不推荐)