You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Bicep模板中为子网关联现有用户定义路由(UDR)

如何在Bicep中为现有子网附加已存在的UDR

嘿,作为Bicep新手遇到这个问题很正常,我来一步步帮你修改模板,把现有的"udr-test"路由表附加到你的两个子网里:

步骤1:引用现有的UDR资源

首先,你需要在模板中声明对已存在的UDR资源的引用,用existing关键字告诉Bicep这是一个已经存在的资源,不需要重新创建:

resource udrExisting 'Microsoft.Network/routeTables@2021-02-01' existing = {
  name: 'udr-test'
  // 重要提示:如果你的UDR和VNet不在同一个资源组里,需要添加scope属性指定UDR所在的资源组,比如:
  // scope: resourceGroup('udr-resource-group-name')
}

步骤2:在子网配置中关联UDR

接下来,修改子网的properties部分,添加routeTable属性,把它指向刚才引用的UDR的ID,这样就能把UDR绑定到子网了:

修改后的子网资源块应该是这样的:

@batchSize(1)
resource Subnets 'Microsoft.Network/virtualNetworks/subnets@2020-11-01' = [for (sn, index) in subnets: {
  name: sn.name
  parent: VNET
  properties: {
    addressPrefix: sn.subnetPrefix
    // 添加这部分,关联UDR
    routeTable: {
      id: udrExisting.id
    }
  }
}]

完整的修改后模板

把所有部分整合起来,最终的模板代码如下:

var addressSpace = [ '10.0.0.0/16' ]
var subnets = [
  {
    name: 'Subnet1'
    subnetPrefix: '10.0.2.0/24'
  }
  {
    name: 'Subnet2'
    subnetPrefix: '10.0.3.0/24'
  }
]

// 引用现有的VNet
resource VNET 'Microsoft.Network/virtualNetworks@2021-02-01' existing = {
  name: 'vnet-test'
}

// 引用现有的UDR
resource udrExisting 'Microsoft.Network/routeTables@2021-02-01' existing = {
  name: 'udr-test'
  // 如果UDR在不同资源组,取消下面注释并修改资源组名称
  // scope: resourceGroup('your-udr-resource-group')
}

// 创建/更新子网并关联UDR
@batchSize(1)
resource Subnets 'Microsoft.Network/virtualNetworks/subnets@2020-11-01' = [for (sn, index) in subnets: {
  name: sn.name
  parent: VNET
  properties: {
    addressPrefix: sn.subnetPrefix
    routeTable: {
      id: udrExisting.id
    }
  }
}]

注意事项

  • 确保UDR的API版本和VNet的版本尽量匹配(这里用了2021-02-01,和你的VNet版本一致),避免兼容性问题。
  • 如果UDR和你的VNet不在同一个Azure资源组,一定要加上scope属性指定UDR所在的资源组,否则Bicep会在当前模板的资源组里找UDR,导致找不到资源的错误。

内容的提问来源于stack exchange,提问作者Mantra001

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.27 15:07:45