使用 terraform 调试 route53 托管区域问题

Debugging route53 hosted zone issues with terraform

当 运行 一个 terraform 在 Atlas 上申请并在 AWS route 53 上失败时,我遇到以下错误:

Apply execution has failed
The apply encountered an errored while executing 10 minutes ago. State information was persisted and subsequent applies will continue making changes in a safe way.
Terraform v0.6.11

Setting up remote state...
Downloading remote modules...
Refreshing Terraform state prior to plan...
aws_route53_zone.zone: Destroying...
module.prod_website.aws_iam_access_key.website: Creating...
  secret:            "" => "<computed>"
  ses_smtp_password: "" => "<computed>"
  status:            "" => "<computed>"
  user:              "" => "domain.tld"
module.prod_website.aws_iam_access_key.website: Creation complete
Error applying plan:

1 error(s) occurred:

* aws_route53_zone.zone: HostedZoneNotEmpty: The specified hosted zone contains non-required resource record sets  and so cannot be deleted.
    status code: 400, request id: 8305ce48-cab3-11e5-92ae-d57244aa6db1

Terraform does not automatically rollback in the face of errors.
Instead, your Terraform state file has been partially updated with
any resources that successfully completed. Please address the error
above and apply again to incrementally change your infrastructure.

如何找出托管区域的 ID 以便删除它?或者,我如何找出正在使用的资源并污染该资源?此申请的回购协议在这里:https://github.com/zinedistro/infrastructure

编辑:这是full debug logs

看起来 Terraform 试图以某种方式 create/destroy/manipulate 的托管区域已经存在。这可能是由于之前失败的创建尝试或之前有人手动添加了区域。解决此错误的一种方法是通过控制台进入并确定哪个特定区域 ("website"?) 已经存在,然后手动将其删除,然后使用 Terraform 重新创建。

使用 AWS CLI,您可以 运行 aws route53 list-hosted-zones 获取托管区域列表。

此外,您可以转到 AWS 控制台 > Route 53 > 托管区域并查看 Hosted Zone ID 列。

即使有一个 non-default 记录集,也无法删除托管区域 。 在 AWS docs.

中检查此项

Terraform 0.7.1 introduced 能够为区域指定 force_destroy 参数,如果设置为 true 将删除该区域中的所有记录,然后删除该区域本身。

如果您希望 Terraform 完全管理该区域,但其他工具可能会添加 Terraform 不知道的记录,这可能会有用。