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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 18:21:03