Terraform "Create R53 Alias for VPC Interface Endpoint Failing on Zone Match" -- 但 Zone 是正确的

Terraform "Create R53 Alias for VPC Interface Endpoint Failing on Zone Match" -- But Zone is correct

我正在尝试使用 Terraform v0.13.6 并指向 VPC 端点 (vpce) 在私有托管区域中创建 Route53 别名记录,但自然失败:

Error building changeset: InvalidChangeBatch: [Tried to create an alias that targets ssm.us-west-2.amazonaws.com., type A in zone [XXXX], but the alias target name does not lie within the target zone] status code: 400

我正在寻址 [XXXX] 的区域确实是 VPCe 的区域,而不是 DNS 的区域,所以我希望避免了这个常见错误。

当我通过控制台或命令行查看 VPCe 时,我在结果中看到 正确的 区域(与 [XXXX] 匹配),因此 Terraform return 字面上告诉我 VPCe 不在控制台和 CLI 所说的区域中。

当我使用控制台创建别名记录时,它工作正常!

VPCe 在两个子网中,因此 VPCe 控制台记录中列出了三 (3) 个 DNS 名称(显然是通用记录,每个指定子网一个)但 DNS 区域都是相同的,所以那应该不是问题。在代码中,我跟踪第 0 条记录,并使用通用端点的名称,因为我希望在出现故障的情况下跨两个子网进行解析。

相关代码如下。有人对可能发生的事情有任何见解吗?

resource "aws_route53_record" "endpoint_record" {
        for_each = var.vpce
        provider = aws.someprovider
        zone_id  = aws_route53_zone.private[each.key].zone_id
        name    = ""
        type    = "A"

         alias {
             name = each.value.url
             zone_id = aws_vpc_endpoint.ssm_endpoint[each.key].dns_entry[0].hosted_zone_id
    evaluate_target_health = true
  }
        depends_on = [
    aws_route53_zone.private,
  ]
}

别名调用中的 url 是 ssm.us-west-2.amazonaws.com 类型,如您在错误消息中所见。

知道会发生什么吗?

对于 aliasname,我想你会想要使用 aws_vpc_endpoint 提供的那个,所以:

alias {
  name = aws_vpc_endpoint.ssm_endpoint[each.key].dns_entry[0].dns_name
  zone_id = aws_vpc_endpoint.ssm_endpoint[each.key].dns_entry[0].hosted_zone_id
  evaluate_target_health = true
}

我不知道 each.value.url 的值是多少,但我认为它不正确。