【发布时间】:2020-12-17 19:47:42
【问题描述】:
当我有一个托管区域时,我很容易创建该区域,然后通过按名称引用托管区域的名称在委派帐户中为该区域创建 NS 记录。
- 编辑为了避免混淆,这是我想要实现的,但对于多个托管区域并且域的所有者是管理帐户:https://dev.to/arswaw/create-a-subdomain-in-amazon-route53-in-2-minutes-3hf0
现在我需要创建多个托管区域并将名称服务器记录传递回父帐户,但我不确定是否可以(或如何)引用多个资源。读到这里可能没有多大意义,所以下面的代码就是我所掌握的。
我现在有一个for_each 循环,它将遍历字符串列表并为每个字符串创建一个托管区域,然后我想在另一个帐户中创建相应的 NS 记录,请注意我正在使用单独的提供程序@ 987654323@ 连接到管理帐户,这适用于单个托管区域。
我不知道如何引用托管区域,是否有一些语法或我的方法错误?
resource "aws_route53_zone" "public_hosted_zone" {
for_each = local.aws_zones
name = "${each.value}.${var.domain}"
}
resource "aws_route53_record" "ns_records" {
for_each = local.aws_zones
provider = aws.management_account
allow_overwrite = true
name = "${each.value}.${var.domain}"
ttl = 30
type = "NS"
zone_id = data.aws_ssm_parameter.public_hosted_zone_id.value
records = [
aws_route53_zone.public_hosted_zone.name_servers[0], # Here is my old code which works for a single hosted zone but I cannot work out how to reference multiples created above
aws_route53_zone.public_hosted_zone.name_servers[1],
aws_route53_zone.public_hosted_zone.name_servers[2],
aws_route53_zone.public_hosted_zone.name_servers[3]
]
}
【问题讨论】:
-
records = aws_route53_zone.public_hosted_zone.name_servers应该在 TF >= 0.12 中工作 -
一个很小的调整(第一次构建失败)
records = aws_route53_zone.public_hosted_zone[each.key].name_servers你能告诉我这是怎么工作的吗?当我查看计划输出 terraform 是先创建托管区域然后是 route53 记录时,它如何将两者联系起来并使用 route53 记录for_each中的each.key正确引用在aws_route53_zone中创建的资源? -
local.aws_zones的形式是什么? -
看起来像这样
["dev", "test", "qa"] -
你想在这里实现什么?看起来您正在尝试将区域的 NS 记录设置为该区域已经存在的名称服务器。首先,这不是您为 route53 区域设置名称服务器的方式,其次,您实际上不需要在此处执行任何操作,因为您会在创建区域后查看您的区域记录。
标签: amazon-web-services foreach terraform amazon-route53