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

Terraform跨模块访问动态生成map的指定key值报错如何解决

问题根因
  • module.nlb_instance[*]使用的splat运算符会返回所有nlb_instance模块实例组成的列表,你直接对列表追加map的key索引,属于类型不匹配,因此触发map无效类报错。
  • 拼接的key如果和实际ALB名称存在大小写、字符、前后缀的差异,也会触发key匹配失败的报错。
解决方案

根据你nlb_instance模块的声明方式选择对应写法:

场景1:nlb_instance为单实例(未声明count)

直接删除splat运算符[*]即可:

module "nlb_listener" {
  # 其余无关模块属性省略
  load_balancer_arn = module.nlb_instance.this_alb_id_and_name["the_alb_name_${count.index}"]
}

场景2:nlb_instance为多实例(已声明count)

先定位到对应索引的模块实例,再访问其输出的map:

module "nlb_listener" {
  count = length(module.nlb_instance) # 可根据你的业务需求调整count值
  # 其余无关模块属性省略
  load_balancer_arn = module.nlb_instance[count.index].this_alb_id_and_name["the_alb_name_${count.index}"]
}
注意事项
  • 配置前可通过terraform console命令打印module.nlb_instance.this_alb_id_and_name的返回值,确认key的实际格式,避免拼接的key和实际值不匹配。
  • 若需要批量提取所有ALB的ARN,可通过for表达式转换,示例:flatten([for ins in module.nlb_instance : values(ins.this_alb_id_and_name)])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 05:06:02