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

Terraform v1.3.1中LB资源安全组值传递的正确语法咨询

Terraform v1.3.1 对应语法转换

原v0.11.11的代码意图是将两个来源的安全组ID合并为列表:从批量创建的lb_security_group中按当前count.index取对应ID,再加上cloudfront_sg_id变量分割后的ID列表。转换到v1.3.1的正确语法如下:

security_groups = concat(
  # 从lb_security_group中按索引取对应ID,转为单元素列表
  [aws_security_group.lb_security_group[count.index].id],
  # 分割cloudfront_sg_id变量为ID列表
  split(",", var.cloudfront_sg_id)
)

关键语法变化说明:

  • 移除旧插值语法:新版本Terraform无需用${}包裹表达式,直接写逻辑即可。
  • 资源列表访问:用[*](splat表达式)替代旧版的.*来获取批量资源的属性列表;如果是按count.index精准访问,直接用[count.index]更简洁(若count值与lb_security_group的count一致,不会出现索引越界)。
  • 明确列表合并:原代码的写法在v0.11中依赖隐式列表转换,新版本需用concat函数明确合并两个列表,确保类型匹配。

如果需要保留原代码中element函数的“索引越界时循环取值”特性,可改为:

security_groups = concat(
  [element(aws_security_group.lb_security_group[*].id, count.index)],
  split(",", var.cloudfront_sg_id)
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 09:15:32