我正在嘗試在創建具有 4 個子網的虛擬網路的模塊中輸出每個子網的 referenceId。我可以得到第一個[0],但是當我嘗試輸出其他[1], [2], [3]的時,部署失敗并拋出錯誤:
The language expression property array index "1" is out of bounds
下面是創建 virtualNetwork 和子網的代碼:
resource virtualNetwork 'Microsoft.Network/virtualNetworks@2018-11-01' = {
name: vNetName
location: location
tags: tags
properties: {
addressSpace: {
addressPrefixes: [
addressPrefix
]
}
subnets: subnets
}
}
subnets 是陣列型別的變數:
var subnets = [
{
name: mgmtSubnetName
properties: {
addressPrefix: mgmtSubnetAddressPrefix
}
}
{
name: intSubnetName
properties: {
addressPrefix: intSubnetAddressPrefix
}
}
{
name: extSubnetName
properties: {
addressPrefix: extSubnetAddressPrefix
}
}
{
name: vdmsSubnetName
properties: {
addressPrefix: vdmsSubnetAddressPrefix
}
}
]
當我使用下面的輸出行時,它回傳一個包含 4 個物件的陣列……每個創建的子網一個:
output subnets array = virtualNetwork.properties.subnets
每個物件的格式如下:
{
"name":"<value>",
"id":"<value>",
"etag":"<value>",
"properties":{
"provisioningState":"Succeeded",
"addressPrefix":"<value>",
"ipConfigurations":[
{
"id":"<value>"
}
],
"delegations":[]
},
"type":"Microsoft.Network/virtualNetworks/subnets"
}
當我使用下面的輸出行時,它回傳子網陣列中的第一個物件:
output subnet1 object = virtualNetwork.properties.subnets[0]
當我使用下面的輸出行時,它回傳resourceId第一個子網的:
output subnet1 string = virtualNetwork.properties.subnets[0].id
我無法使用索引1, 2,或檢索陣列中的其他物件3。
我也嘗試過該resourceId功能(下面的示例),但對于索引1, 2,或的行為完全相同3:
output subnet1Id string = resourceId('Microsoft.Network/VirtualNetworks/subnets', name, subnets[0].name)
uj5u.com熱心網友回復:
您可以使用下面的二頭肌模板來部署 vnet 和子網,并輸出子網和子網 ID,如下所示:
var subnets = [
{
name: 'vm-subnet'
properties: {
addressPrefix:'10.0.0.0/24'
}
}
{
name: 'webapp-subnet'
properties: {
addressPrefix:'10.0.1.0/24'
}
}
{
name: 'appgw-subnet'
properties: {
addressPrefix:'10.0.2.0/24'
}
}
{
name: 'bastion-subnet'
properties: {
addressPrefix:'10.0.3.0/24'
}
}
]
resource virtualNetwork 'Microsoft.Network/virtualNetworks@2018-11-01' = {
name: 'ansuman-vnet'
location: 'east us'
properties: {
addressSpace: {
addressPrefixes: [
'10.0.0.0/16'
]
}
subnets: subnets
}
}
output subnets array = [for (name, i) in subnets :{
subnets : virtualNetwork.properties.subnets[i]
}]
output subnetids array = [for (name, i) in subnets :{
subnets : virtualNetwork.properties.subnets[i].id
}]
output subnetappgw string = virtualNetwork.properties.subnets[2].id
output webappsubnet object = virtualNetwork.properties.subnets[1]
輸出:





注意:我使用的是最新的二頭肌版本,即Bicep CLI version 0.4.1124
uj5u.com熱心網友回復:
好吧,我想我應該提到我們試圖在 Azure Stack 上運行它。我最初發布的代碼和@AnsumanBal-MT 發布的代碼在 Azure Commercial 中按預期作業,但是在針對 Azure Stack 運行時......它會引發我在原始帖子中包含的錯誤。因此,顯然 Azure Stack 上的 API 存在問題,并且代碼沒有問題。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/420695.html
標籤:
