Terraform如何获取map变量创建的各可用区对应子网ID
解决方案
你通过for_each创建的aws_subnet.public_subnet本质是键为可用区、值为子网资源对象的映射结构,直接使用for表达式遍历映射即可输出可用区与子网ID的对应关系,输出配置如下:
output "public_subnet_ids_by_az" { type = map(string) description = "可用区对应公网子网ID的映射" value = { for az, subnet_res in aws_subnet.public_subnet : az => subnet_res.id } }
执行terraform apply后,输出结果示例如下:
public_subnet_ids_by_az = { "ap-south-1a" = "subnet-0abc123def456xxx" "ap-south-1b" = "subnet-0def789ghi012yyy" }
补充说明
aws_subnet.public_subnet[*] 这种splat表达式仅适用于用count创建的列表类型资源集合,对你用for_each生成的映射类型资源集合不生效,直接用for遍历映射是最稳妥的实现方式。
内容的提问来源于stack exchange,提问作者Alim Azad
相关产品推荐
相关产品推荐

