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

使用Terraform count创建多ALB后输出属性报错求助

问题分析与解决方案

错误原因说明

  1. 第一个错误:i.Name 属性不存在。你在EC2输出中使用的i.tags.Name是EC2实例标签里的字段,但ALB模块的输出属性并非Name(大写),而是对应你在模块中设置的name参数(小写),或者模块输出的其他命名属性(比如lb_name,取决于模块定义)。
  2. 第二个错误:Terraform的for表达式构建map时,必须明确指定键-值对,你只提供了值表达式,缺少键部分,因此触发语法错误。

解决方案

方案1:利用模块输出的name属性作为键

如果你的ALB模块会输出你配置的name参数值(即lower("SH-alb-${count.index+1}")),直接用该属性作为map的键:

output "ex_alb_map" {
  value = { for alb in module.ex-alb: alb.name => "${alb.lb_id}:${alb.lb_dns_name}:${alb.security_group_id}" }
}

方案2:手动生成一致名称作为键(不依赖模块输出)

如果不确定模块是否输出name属性,可以直接复用模块中定义的命名规则生成键,避免属性名匹配问题:

output "ex_alb_map" {
  value = { for idx, alb in module.ex-alb: lower("SH-alb-${idx+1}") => "${alb.lb_id}:${alb.lb_dns_name}:${alb.security_group_id}" }
}

方案3:输出结构化数据(推荐)

如果需要更易读的输出格式,可以放弃字符串拼接,输出嵌套map:

output "ex_alb_details" {
  value = { for idx, alb in module.ex-alb: lower("SH-alb-${idx+1}") => {
    id                = alb.lb_id
    dns_name          = alb.lb_dns_name
    security_group_id = alb.security_group_id
  } }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 19:58:11