Terraform循环从复杂对象赋值创建Route53 NS记录报错求助
修正后的Terraform Route53 NS记录代码
原代码的循环语法不符合Terraform规范,要实现动态创建多实例NS记录,需使用for_each完成迭代。以下是修正后的完整代码:
resource "aws_route53_record" "erp_subdomain_dev_portalns_record" { for_each = { for subdomain in var.subdomain_list : subdomain.url => subdomain } allow_overwrite = true zone_id = aws_route53_zone.primary.zone_id ttl = 300 type = "NS" name = each.value.url records = each.value.nsrecords }
关键修正说明
- 用
for_each实现资源迭代:将var.subdomain_list转换为以子域名url为键的映射,确保每个NS记录实例有唯一标识,避免资源冲突。 - 简化属性引用:
each.value代表当前迭代的子域名对象,直接提取url作为记录名称、nsrecords作为NS记录值——原代码中的嵌套列表循环完全多余,因为nsrecords本身就是符合要求的字符串列表。 - 变量定义无需修改:你编写的
vars.tf中变量类型、结构及默认值均正确,可直接保留。
内容的提问来源于stack exchange,提问作者Travis J
相关产品推荐
相关产品推荐

