如何用Terraform高效输出所有ALB Target Group资源?
解决Terraform批量输出所有ALB目标组名称的问题
- 你之前使用的
aws_lb_target_group.*.name是Terraform 0.11及更早版本的语法,在0.12+版本中已不再支持,需要改用values()函数来提取所有资源实例的属性。 - 在
output.tf中可以这样编写批量输出的代码:
output "alb_target_group_names" { description = "所有ALB目标组名称" value = values(aws_lb_target_group)[*].name }
- 如果需要确保输出为标准列表格式,可结合
tolist()函数转换:
output "alb_target_group_names" { description = "所有ALB目标组名称" value = tolist(values(aws_lb_target_group)[*].name) }
- 逻辑说明:
values(aws_lb_target_group)会返回所有目标组资源实例的对象集合,[*].name用于遍历该集合并提取每个对象的name属性,最终得到所有目标组名称的列表。 - 即使你的目标组是通过
for_each批量创建的,上述写法依然适用,values()会自动处理for_each生成的资源映射,将其转换为可遍历的列表。
内容的提问来源于stack exchange,提问作者Mudits
相关产品推荐
相关产品推荐

