gpt4 book ai didi

amazon-web-services - Terraform:AWS Cloudfront 分布在将 Terraform 状态后端从本地更改为 s3 后给出 CNAMEAlreadyExists 错误

转载 作者:行者123 更新时间:2023-12-04 12:45:37 27 4
gpt4 key购买 nike

我正在尝试使用 Terraform 来设置 S3 + Cloudfront 静态站点。最初,我按照 https://alimac.io/static-websites-with-s3-and-hugo-part-1/ 中的步骤成功设置了站点。

但是,之后我将 terraform 状态后端从 local 更改为 s3 现在,当我执行 terraform apply 时,出现以下错误:

Error: Error applying plan:

2 error(s) occurred:

* aws_cloudfront_distribution.primary_domain: 1 error(s) occurred:

* aws_cloudfront_distribution.primary_domain: CNAMEAlreadyExists: One or more of the CNAMEs you provided are already associated with a different resource.
status code: 409, request id: <removed>
* aws_cloudfront_distribution.secondary_domain: 1 error(s) occurred:

* aws_cloudfront_distribution.secondary_domain: CNAMEAlreadyExists: One or more of the CNAMEs you provided are already associated with a different resource.
status code: 409, request id: <removed>

关于为什么会发生这种情况以及我能做些什么来解决这个问题有什么想法吗?

最佳答案

Terraform 使用状态文件来跟踪它管理的资源。如果它没有特定资源(在本例中可能是您​​的 aws_cloudfront_distribution.primary_domain 资源),它将创建一个新资源并将该新资源的 ID 存储在您的状态文件中。

看起来你做了一个 terraform apply使用本地状态文件,将后端更改为 s3 而不将状态移植到 s3,然后运行 ​​terraform apply再次。第二个 S3 支持的运行处于空白状态,因此它尝试重新创建您的 aws_cloudfront_distribution再次资源。看起来像错误 indicates a conflict in using the same CNAME for two distributions ,如果您运行 Terraform 两次而不跟踪其间的状态,就会发生这种情况。

您有几个选项可以解决此问题:

  • 返回使用您现有的本地状态文件,terraform destroy删除它创建的资源,切换回 s3,然后 terraform apply重新开始。请注意,这实际上删除资源。
  • 适本地改变你的后端和reinitialize ,然后回答"is"以将您的远程状态复制到 S3。
  • terraform import您使用本地状态文件创建的资源到您的 S3 后端。使用 terraform import
    aws_cloudfront_distribution.primary_domain <EXISTING CLOUDFRONT DIST.
    ID>
    执行此操作.

关于amazon-web-services - Terraform:AWS Cloudfront 分布在将 Terraform 状态后端从本地更改为 s3 后给出 CNAMEAlreadyExists 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49838898/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com