“找不到匹配的 Route53Zone”:Terraform 的 Route53 数据源无法识别托管区域名称

Kos*_*ris 5 amazon-route53 terraform

假设我有一个公共托管区域名称example.com.。我使用以下 Terraform 代码根据文档的名称动态获取托管区域 ID 。

data "aws_route53_zone" "main" {
  name = "example.com." # Notice the dot!!!
  private_zone = false
}
Run Code Online (Sandbox Code Playgroud)

terraform plan它出现此错误期间:

Error refreshing state: 1 error(s) occurred:

* data.aws_route53_zone.main: no matching Route53Zone found
Run Code Online (Sandbox Code Playgroud)

是否有我应该报告的错误或我遗漏了什么?

yda*_*coR 7

aws_route53_zone数据源会列出该Terraform有权查看帐户中所有的托管区域。

如果您尝试引用另一个帐户中的区域,则可以通过在具有列出所有区域 ( route53:ListHostedZones*,route53:GetHostedZone*)权限的区域的帐户中创建角色/用户,然后为此使用第二个“提供者”来实现此目的数据源。

所以你可能有这样的事情:

provider "aws" {
    # ... access keys etc/assume role block
}

# DNS account
provider "aws" {
    alias = "dns_zones"
    # ... access keys etc/assume role block
}

data "aws_route53_zone" "main" {
  provider = "aws.dns_zones"
  name = "example.com." # Notice the dot!!!
  private_zone = false
}

resource "aws_route53_record" "www" {
  zone_id = "${data.aws_route53_zone.main.zone_id}"
  name = "www.${data.aws_route53_zone.main.name}"
  ...
}
Run Code Online (Sandbox Code Playgroud)


Ken*_*nzo 5

使用 thezone_id代替 thename为我做到了。

data "aws_route53_zone" "api2" {
  # name = "example.com."
  zone_id = "REPLACEWITHYOURID"
  vpc_id = "${var.vpc_id}"
}
Run Code Online (Sandbox Code Playgroud)