gpt4 book ai didi

azure - Bicep - 将数组与循环配对

转载 作者:行者123 更新时间:2023-12-03 06:30:03 41 4
gpt4 key购买 nike

我的情况是,我有一个公司列表,以及一个我想在我的二头肌文件中配对的队列列表。我想使用结果将队列添加到服务总线命名空间。

这是队列数组的示例:

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

这是公司数组的示例:

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

我想使用二头肌语法循环遍历公司列表,并在每个队列之前插入公司名称。在这种情况下,我想要得到像 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 变量在上述情况下存在语法错误,例如“当前不支持直接引用资源或模块集合。将数组索引器应用于表达式。”

最佳答案

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

// 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 开始,循环遍历公司。

// 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
}
}]

关于azure - Bicep - 将数组与循环配对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75296363/

41 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com