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

如何通过名称过滤获取Azure Terraform应用网关后端地址池ID?

按名称过滤Azure应用网关后端地址池ID的Terraform实现

针对你需要通过名称匹配获取指定后端地址池ID的需求,这里提供两种可靠的实现方式,完全避免依赖不稳定的索引位置:

方式1:在模块调用时直接过滤

利用Terraform的for表达式和flatten函数,从返回的后端池列表中精准筛选目标名称对应的ID:

# 在需要引用后端池ID的模块/资源块中使用
agw_pool_id = one([
  for pool in flatten(module.agw-internal-gateway.backend_address_pool) :
  pool.id if pool.name == "hif-vnetb-beap-app8"
])
  • flatten():将你当前输出的嵌套列表+集合结构([toset([...])])扁平化,转为一维对象列表,方便遍历处理
  • for表达式:遍历每个池对象,仅保留名称完全匹配的项
  • one():确保返回单个ID值(因后端池名称唯一,筛选结果只会有一个元素)

方式2:在模块内部输出名称-ID映射(更灵活)

修改应用网关模块的输出配置,直接生成一个以池名称为键、ID为值的映射表,后续调用时可直接通过名称快速取值:

模块内的输出配置:

output "backend_address_pool_id_map" {
  value = {
    for pool in flatten(azurerm_application_gateway.ag[*].backend_address_pool) :
    pool.name => pool.id
  }
}

调用模块时获取ID:

agw_pool_id = module.agw-internal-gateway.backend_address_pool_id_map["hif-vnetb-beap-app8"]

这种方式的优势在于,后续需要其他后端池ID时,无需重复编写过滤逻辑,直接通过名称即可获取,完全适配后端池数量变化的场景。

内容的提问来源于stack exchange,提问作者Cobra Commander

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 05:20:50