如何解决 Terraform“已存在”。terraform 应用时多个资源出错?

Ast*_*mad 5 amazon-web-services terraform

Terraform 在 terraform apply 上失败,因为“已存在”错误失败。我认为发生了这种情况,因为我手动删除了 tfstate 和 ddb md5 条目。这创造了 Terraform 的怪异状态。

现在,当我进行初始化、计划和应用时,我收到了很多错误,如下所示:

Error: error creating SSM parameter: ParameterAlreadyExists: The parameter already exists. To overwrite this value, set the overwrite option in the request to true.
......

Error: error creating SSM parameter: ParameterAlreadyExists: The parameter already exists. To overwrite this value, set the overwrite option in the request to true.


Error: Error creating DB Parameter Group: DBParameterGroupAlreadyExists: Parameter group abc already exists

Run Code Online (Sandbox Code Playgroud)

我已经查看了导入选项,但它太混乱了。

有没有一种简单或更干净的方法来解决这个问题?谢谢您,任何建议都会有所帮助。

Leo*_*Leo 4

简短的回答是,这取决于。

每个资源都有其自己的功能,有些允许您覆盖现有资源,有些则不允许。

例如,对于 ssm 参数,您可以向资源添加“覆盖”标志。

resource "aws_ssm_parameter" "foo" {
  name  = "foo"
  type  = "String"
  value = "bar"

  overwrite = true
}
Run Code Online (Sandbox Code Playgroud)

官方参考:ssm_parameter

现在,避免丢失 tfstate 问题的一个好方法是将其存储在 S3 中具有版本控制的存储桶中。