Bicep配置VNet对等连接时循环逻辑报错求助
数据驱动VNet对等连接Bicep代码错误修复
问题说明
尝试实现数据驱动的Azure VNet对等连接方案,期望通过参数文件添加配置即可新增对等连接,但编写的Bicep代码出现类型错误:
The property "properties" expected a value of type "VirtualNetworkPeeringPropertiesFormat | null" but the provided value is of type "object[]"
错误原因
Microsoft.Network/virtualNetworks/virtualNetworkPeerings资源的properties字段要求是单个VirtualNetworkPeeringPropertiesFormat对象,原代码错误地在properties内部使用数组循环,生成了对象数组,不符合资源类型定义。
修复后的Bicep代码
调整循环逻辑,将对等连接的创建移到资源级别,每个目标VNet对应一个独立的对等连接资源:
param peers object resource vNetPeer 'Microsoft.Network/virtualNetworks/virtualNetworkPeerings@2020-05-01' = [ // 遍历每个源VNet的对等配置组 for peerGroup in peers.peerings: // 遍历当前源VNet下的所有目标对等VNet for destNetwork in peerGroup.vNetPeeringDestinationNetwork: { // 指定对等连接的父资源(源VNet) parent: resourceId('Microsoft.Network/virtualNetworks', peerGroup.vNetPeeringSourceNetwork) // 生成对等连接名称:源VNet名称-目标VNet后缀 name: '${peerGroup.vNetPeeringSourceNetwork}-${destNetwork.peerNetworkSuffix}' properties: { allowVirtualNetworkAccess: destNetwork.allowVirtualNetworkAccess allowForwardedTraffic: destNetwork.allowForwardedTraffic allowGatewayTransit: destNetwork.allowGatewayTransit useRemoteGateways: destNetwork.useRemoteGateways remoteVirtualNetwork: { // 根据是否跨订阅生成目标VNet的资源ID id: destNetwork.remote ? resourceId(destNetwork.remoteNetworkSubscription, destNetwork.peeredNetworkResourceGroup, 'Microsoft.Network/virtualNetworks', destNetwork.peerNetworkSuffix) : resourceId(destNetwork.peeredNetworkResourceGroup, 'Microsoft.Network/virtualNetworks', destNetwork.peerNetworkSuffix) } } } ]
参数文件说明
原参数文件结构无需修改,保持现有格式即可。每个peerings元素对应一个源VNet,其下的vNetPeeringDestinationNetwork数组可添加多个目标VNet的对等配置,部署时会自动为每个目标生成对应的对等连接。
{ "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentParameters.json#", "contentVersion": "1.0.0.0", "parameters": { "peers": { "value": { "peerings": [ { "vNetPeeringSourceNetwork": "Test-VM2", "vNetPeeringDestinationNetwork": [ { "allowVirtualNetworkAccess": true, "allowForwardedTraffic": true, "allowGatewayTransit": false, "useRemoteGateways": false, "remote": false, "peerNetworkSuffix": "TestVM-vnet", "peeredNetworkResourceGroup": "TestVM", "remoteNetworkSubscription": "37beac69-e9c7-40fc-9d7b-6c1adf274185" }, { "allowVirtualNetworkAccess": true, "allowForwardedTraffic": true, "allowGatewayTransit": false, "useRemoteGateways": false, "remote": false, "peerNetworkSuffix": "TestVM-vnet3", "peeredNetworkResourceGroup": "TestVM", "remoteNetworkSubscription": "37beac69-e9c7-40fc-9d7b-6c1adf274185" } ] } ] } } } }
内容的提问来源于stack exchange,提问作者user20111722
相关产品推荐
相关产品推荐

