Terraform本地嵌套for循环创建报错问题求助
Terraform For表达式错误修正方案
问题根源
你嵌套的最内层for k, v in value完全多余——value本身是包含endpoint_name和health_check_name的单个对象,而非集合类型。这个多余的循环不仅违背了你的实际需求,还触发了Terraform的语法错误:Terraform要求for表达式构建对象时必须明确指定键表达式,而你的写法不符合该规则。
修正后的代码
custom_endpoints = [ for each in var.endpoints : { for key, value in each.custom_endpoints : key => { "${value.endpoint_name}.${each.domain_name}" = { health_check_fqdn = "${value.health_check_name}.${each.domain_name}" region = each.aws_region } } } ]
代码说明
- 移除了无意义的内层
for k, v in value循环,直接基于value对象的属性构造目标键值对 - 保留外层两层for循环逻辑:遍历每个endpoint,再遍历每个endpoint下的custom_endpoints条目
- 最终生成的结构与预期一致:每个列表元素是一个map,键为原
custom_endpoints的键(如service),值为包含拼接后域名的嵌套map
内容的提问来源于stack exchange,提问作者sebastianwth
相关产品推荐
相关产品推荐

