嵌套资源不能出现在带有 for 表达式的资源内部

问题描述 投票:0回答:0

我想生成一个带有二头肌和多个主题的 ESB。每个主题可以有一个或多个订阅。这些都在此列表中定义。

var topics = [{
  name: 'topic.one'
  subscriptions: [ 'esm', 'erp', 'pms' ]
}, {
  name: 'topic.two'
  subscriptions: [ 'esm' ]
}, {
  name: 'topic.three'
  subscriptions: [ 'erp', 'insights' ]
}, {
  name: 'topic.four'
  subscriptions: [ 'pms', 'cmdb']
}, {
  name: 'topic.five'
  subscriptions: [ 'billing', 'custom', 'erp', 'dax' ]
}]

当我创建资源时,最简单和最动态的解决方案将在循环内创建一个循环,如下所示。

resource sb_events 'Microsoft.ServiceBus/namespaces@2022-01-01-preview' = {
  name: 'servicebus-events'
  location: 'westeurope'
  sku: {
    capacity: 1
    name: 'Standard'
    tier: 'Standard'
  }

  resource topic_resources 'topics' = [for topic in topics: {
    name: topic.name  

    resource subscription_resources 'subscriptions' = [for subscription in topic.subscriptions: {
      name: subscription
      properties: vSubscriptionProperties
    }]
  }]
}

但这给了我下一个错误:

嵌套资源不能出现在带有 for 表达式的资源内部。二头肌(BCP160)

当这段代码看起来符合逻辑时,bicep 编译器不接受它。我该如何解决这个问题?

azure esb azure-bicep infrastructure-as-code
© www.soinside.com 2019 - 2024. All rights reserved.