You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Terraform中使用for_each合并变量时遇模板插值错误

解决Terraform列表变量无法参与字符串模板插值的问题

错误原因

问题核心在于each.value["host_header"]是**list(string)**类型,但字符串模板插值要求输入单个字符串,直接将列表代入会触发类型不匹配错误。

解决方案

根据你的实际使用场景,提供两种可行处理方式:

场景1:host_header始终仅含一个元素(如你的tfvars配置["utility"])

直接通过索引提取列表的第一个元素,拼接完成后再包裹为列表(适配子模块aws_lb_listener_rule的列表类型参数要求):

listener_rule_host_header = ["${each.value["host_header"][0]}.${var.environment}.${var.domain}"]

场景2:未来host_header可能包含多个元素

使用for表达式遍历列表,为每个前缀自动拼接环境标识和域名后缀,批量生成完整主机头列表:

listener_rule_host_header = [
  "${h}.${var.environment}.${var.domain}"
  for h in each.value["host_header"]
]

效果验证

假设变量取值为:

  • host_header = ["utility"]
  • environment = "dev"
  • domain = "example.com"

两种方案都会生成符合需求的主机头列表:["utility.dev.example.com"],既满足通过environment统一管理环境标识的需求,也能被子模块的aws_lb_listener_rule正确识别。

内容的提问来源于stack exchange,提问作者rufus49

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.17 11:45:36