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

如何在Terraform中循环引用多个ServiceBus主题的订阅?

在Terraform中批量引用ServiceBus主题的订阅

要实现为每个已存在的ServiceBus主题引用对应的订阅,核心是用Terraform的for_each让订阅数据块和主题数据块一一绑定,修改后的代码如下:

data "azurerm_servicebus_namespace" "sb" {
  name                = "你的ServiceBus命名空间名称"
  resource_group_name = "你的资源组名称"
}

data "azurerm_servicebus_topic" "subscribe_topics" {
  # 将列表转为集合,适配for_each的要求
  for_each     = toset(local.subscribe_topics)
  name         = each.value
  namespace_id = data.azurerm_servicebus_namespace.sb.id
}

data "azurerm_servicebus_subscription" "subscriptions" {
  # 遍历所有已获取的主题数据源
  for_each = data.azurerm_servicebus_topic.subscribe_topics
  
  # 绑定当前遍历到的主题ID
  topic_id = each.value.id
  name     = local.sb_subscription_name
}

locals {
  subscribe_topics = [
    "topic1",
    "topic2",
    "topic3"
  ]

  sb_subscription_name = "xyz"
}

关键说明:

  • 用toset(local.subscribe_topics)把列表转为集合:for_each对集合的支持更稳定,避免因列表索引变动导致不必要的资源重建
  • 订阅数据块通过for_each关联主题数据源:每个主题会自动生成对应的订阅引用
  • 引用具体订阅时,可通过主题名称定位,比如data.azurerm_servicebus_subscription.subscriptions["topic1"]就能拿到topic1对应的订阅信息

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 19:33:25