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

Terraform v0.11如何将两组不同EC2实例添加到aws_elb资源

结论先行

你写的第二种直接把两个splat表达式放在数组里的写法不可用,必须使用concat函数实现列表合并,这是Terraform 0.11版本下的唯一标准实现方案。

原因说明

在Terraform 0.11的语法体系中:

  • aws_instance.dataAnode.*.id 这种splat表达式返回的本身就是一个由所有dataAnode组实例ID组成的一维列表
  • 如果你直接写 ["${aws_instance.dataAnode.*.id}", "${aws_instance.dataBnode.*.id}"],最终生成的是嵌套列表(也就是列表里的元素还是列表),而aws_elb的instances参数要求传入元素为字符串类型的一维列表,语法校验就会直接报错,无法正常执行。

正确配置示例

使用concat函数把两个列表拼接为一个一维列表即可:

instances = ["${concat(aws_instance.dataAnode.*.id, aws_instance.dataBnode.*.id)}"]

补充说明

concat本身就是Terraform 0.11专门用来合并多个同类型列表的内置函数,无性能问题,兼容性完全符合要求,不需要考虑其他替代方案。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 19:54:02