为什么我们在 terraform 中得到资源存在错误?

vig*_*y28 5 amazon-web-services terraform

可能是我安静了一段时间不明白的东西。

执行计划然后申请。由于未找到快照,因此创建了少量资源并失败。

aws_lambda_function.LambdaShipRdsLog: Creation complete
aws_rds_cluster_parameter_group.default: Creation complete
aws_db_parameter_group.default: Creation complete
aws_s3_bucket.RdsLogShipment: Creation complete
Error applying plan:
Run Code Online (Sandbox Code Playgroud)

发生了 1 个错误:

* aws_rds_cluster.default: Error creating RDS Cluster: DBClusterSnapshotNotFoundFault: DBClusterSnapshot not found: xy
    status code: 404, request id: 123
Run Code Online (Sandbox Code Playgroud)

所以,我解决了这个问题并触发了计划并再次申请,但最终得到资源存在错误。

发生了 3 个错误:

* aws_db_parameter_group.default: Error creating DB Parameter Group: DBParameterGroupAlreadyExists: Parameter group xyz already exists
    status code: 400, request id: 123
* aws_lambda_function.LambdaShipRdsLog: Error creating Lambda function: ResourceConflictException: Function already exist: xyz
    status code: 409, request id: 123
* aws_rds_cluster_parameter_group.default: Error creating DB Cluster Parameter Group: DBParameterGroupAlreadyExists: Parameter group xyz already exists
    status code: 400, request id: 123
Run Code Online (Sandbox Code Playgroud)

根据我的理解,正在创建的任何资源都将在状态文件中更新,下次当我执行terraform plan配置时,它知道该资源已经存在并将跳过它,但这看起来不像案件。有人可以解释我缺少什么吗?谢谢。

goc*_*uck 1

在没有看到 Terraform 文件和直接计划/应用的情况下,最有可能发生的情况是,您有一个具有相同名称的手动创建的资源,或者 terraform 创建了一个资源,但它被手动删除了。当您手动删除内容时,有时会产生依赖性问题。

  • 这是有道理的,谢谢。但我们如何解决它?我们如何告诉 terraform 如果我们要求它构建的东西已经存在,就继续构建? (6认同)
  • @MartinThurn 希望你现在已经解决了这个问题,但对于其他看到这个问题的人来说:你需要将现有资源导入 Terraform 状态,如下所述:https://www.terraform.io/docs/import/index。 html (2认同)