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

如何从Terraform的map类型输出中提取所有子网ID并传递给Lambda?

解决方案

你可以通过两种方式优化代码,避免手动指定索引:

方式一:在调用时直接提取ID列表

不用修改networking子模块,直接在main.tf里用values()配合for表达式,从map中自动提取所有子网ID:

database_subnets_ids = [for subnet in values(module.networking.database_subnets_properties) : subnet.id]

values()函数会把database_subnets_properties这个map转换为包含所有子网属性的列表,再通过for表达式遍历每个元素,提取其中的id字段,自动生成完整的子网ID列表。

方式二:优化networking子模块的输出

如果希望调用更简洁,可以在networking子模块中新增一个直接输出子网ID列表的output块:

output "database_subnet_ids" {
  description = "List of all Database Subnet IDs"
  value       = [for subnet in aws_subnet.database : subnet.id]
}

之后在main.tf里就能直接引用这个输出:

database_subnets_ids = module.networking.database_subnet_ids

这种方式让子模块的输出更贴合实际使用场景,后续其他模块需要子网ID时也能直接复用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 01:07:39