【发布时间】:2017-01-13 10:06:26
【问题描述】:
假设我有一个公共托管区域名称example.com.。我使用以下 Terraform 代码根据 the docs 的名称动态获取托管区域 ID。
data "aws_route53_zone" "main" {
name = "example.com." # Notice the dot!!!
private_zone = false
}
在terraform plan 期间出现此错误:
Error refreshing state: 1 error(s) occurred:
* data.aws_route53_zone.main: no matching Route53Zone found
是否有我应该报告的错误或我遗漏了什么?
【问题讨论】:
-
您实际上不需要点,如果它不存在,数据源会添加它。您可以使用
aws route53 list-hosted-zones-by-name --query 'HostedZones[*].{Name:Name,PrivateZone:Config.PrivateZone}'之类的信息和 Terraform 使用的凭据检查该区域吗? -
此外,尽管在上面的示例中您没有指定
vpc_id参数,但请注意,如果您这样做了,那么即使您设置了private_zone = false,数据源也会隐式假定您想要一个私有区域。我最近提出了一个拉取请求来改变这种行为here -
哦,我尝试设置的所有基础设施都在 VPC 中!但是托管区域是公共的。它会产生冲突吗?
-
要么,要么您实际上没有该帐户中的域。假设它在那里,那么是的,这听起来像是缺乏特权。
-
您的 cmets 让我找到了解决方案...实际上,我试图将来自另一个帐户的托管区域用作数据源,同时考虑到 Route53 作为资源是全球性的。