azure 二头肌-带线圈的配对阵列

41zrol4v  于 2023-02-05  发布在  其他
关注(0)|答案(1)|浏览(88)

我的情况是,我有一个公司列表,以及一个队列列表,我希望在bicep文件中将它们配对在一起,我希望使用结果将队列添加到服务总线名称空间中。
下面是队列数组的一个示例:

`var queues = [
  'first-queue'
  'second-queue'
  'third-queue'
]``

这是company数组的一个例子:

`var companies = [
  'apple'
  'intel'
  'blizzard'
]``

我想用bicep语法循环遍历company列表,并在每个队列前插入公司名称,在这种情况下,我想得到一个类似于bwlow的结果:

`var res = [ 
  'apple-first-queue'
  'apple-second-queue'
  'apple-third-queue'
  'intel-first-queue'
  'intel-second-queue'
  'intel-third-queue'
  'blizzard-first-queue'
  'blizzard-second-queue'
  'blizzard-third-queue'
]`

我尝试了几种不同的方法,但都无法使其工作。这是我最近的一次尝试,我在下面收到了一条关于“queuesToCreate”语法的错误消息,格式为 “当前不支持直接引用资源或模块集合。将数组索引器应用于表达式”
有没有人看到我做错了什么,能给我指出正确的方向?

`// ## Service bus multiple companies module ## //
module queuesToCreate 'service-bus-loop.bicep' = [for company in companies: {
name: 'multipleQueues-${company}'
  params: {
    company: company
  }
}]
`

``// ## Service bus namespace ## //
resource serviceBusNamespace 'Microsoft.ServiceBus/namespaces@2022-01-01-preview' = {
  name: serviceBusNamespaceName
  location: location
  sku: {
    name: skuName
  }
}

// ## Queues ## //
resource queues 'Microsoft.ServiceBus/namespaces/queues@2022-01-01-preview' = [for queueName in queuesToCreate: {
  parent: serviceBusNamespace
  name: queueName
  properties: {
    maxDeliveryCount: 1
    lockDuration: 'PT5M'
  }
}]`

此service-bus-loop.bicep文件如下所示,并且只返回一个数组作为输出

param company string
`// Create an array with the names of the queues
var queues = [
  '${company}-queue'
  '${company}-queue'
  '${company}-queue'
]

output res array = queues`

queuesToCreate变量在上述情况下存在语法错误,如“当前不支持直接引用资源或模块集合。请将数组索引器应用于表达式”。

a64a0gku

a64a0gku1#

正如评论部分所建议的,您可以始终使用模块为特定公司创建所有队列。

// service-bus-queues.bicep
param serviceBusNamespaceName string
param company string
param queues array

resource serviceBusNamespace 'Microsoft.ServiceBus/namespaces@2022-01-01-preview' existing = {
  name: serviceBusNamespaceName
}

resource queuesToCreate 'Microsoft.ServiceBus/namespaces/queues@2022-01-01-preview' = [for queue in queues: {
  parent: serviceBusNamespace
  name: '${company}-${queue}'
  properties: {
    maxDeliveryCount: 1
    lockDuration: 'PT5M'
  }
}]

然后从你的主要,循环通过公司。

// main.bicep
param serviceBusNamespaceName string
param location string
param skuName string

var queues = [
  'first-queue'
  'second-queue'
  'third-queue'
]

var companies = [
  'apple'
  'intel'
  'blizzard'
]

resource serviceBusNamespace 'Microsoft.ServiceBus/namespaces@2022-01-01-preview' = {
  name: serviceBusNamespaceName
  location: location
  sku: {
    name: skuName
  }
}

module queuesToCreate 'service-bus-queues.bicep' = [for company in companies: {
  name: 'multipleQueues-${company}'
  params: {
    serviceBusNamespaceName: serviceBusNamespace.name
    company: company
    queues: queues
  }
}]

相关问题