如何在Terraform中动态遍历所有aws_subnet资源实例?
解决Terraform引用所有aws_subnet实例的问题
要一次性引用所有aws_subnet实例,你需要用aws_subnet.*.values来获取该资源类型的全部实例列表,而不是直接用aws_subnet.*(后者是资源对象集合,并非可直接遍历的实例属性列表)。
修改后的代码可以简化成:
subnets_by_role = { for subnet in aws_subnet.*.values : subnet.tags.subnet_role => subnet... }
说明
- 这个写法会自动遍历所有
aws_subnet实例,不管你是单独命名的(比如aws_subnet.public、aws_subnet.private)还是用count/for_each动态创建的。 - 和你原来的
merge逻辑完全一致:如果多个子网的subnet_role标签值相同,后遍历到的子网会覆盖先遍历的,和之前两个映射merge时的覆盖规则保持一致。
内容的提问来源于stack exchange,提问作者bitbucket
相关产品推荐
相关产品推荐

