我花了几天时间试图找出如何使用二头肌将路由表链接到子网。我在网上找到的与此相关的文档数量为零。显然,以前有人这样做过-但我做错了什么?
resource virtualNetwork 'Microsoft.Network/virtualNetworks@2019-11-01' = {
name: 'coolname'
location: resourceGroup().location
properties: {
addressSpace: {
addressPrefixes: [
'10.156.0.0/15'
]
}
subnets: [
{
name: 'CloudGuardExternal'
properties: {
addressPrefix: '10.156.0.0/24'
routeTable: // <---------- LOOK HERE
}
}
]
}
}
resource routeTableNumberOne 'Microsoft.Network/routeTables@2020-11-01' = {
name: 'routelol'
location: 'australiaeast'
properties: {
disableBgpRoutePropagation: false
routes: [
{
name: 'dropPacketTestRoute'
properties: {
addressPrefix: '10.0.0.0/8'
nextHopType: 'None'
hasBgpOverride: false
}
}
]
}
}
我创建了一个资源组,在里面创建了一个子网,我还创建了一个路由表,里面有一个示例路由。
我已经花了几天的时间试图找出如何填写routeTable属性。我没有得到一个错误-什么也没有发生。没有错误,当我部署代码,什么也没有出现在门户网站上。
更新
subnets: [
{
name: 'CloudGuardExternal'
properties: {
addressPrefix: '10.156.0.0/24'
routeTable: routeTableNumberOne
}
}
]
我尝试通过CLI命令而不是管道执行上述操作,这次我收到一条错误消息,指出
{“status”:“Failed”,“error”:{“code”:“DeploymentFailed”,“message”:“至少一个资源部署操作失败。请列出部署操作以了解详细信息。有关用法的详细信息,请参阅https://aka.ms/DeployOperations。",“details”:[{“code”:“BadRequest”,“message”:“{\r\n“error”:{\r\n“代码”:“无效请求格式”,\r\n
“消息”:“无法分析请求。",\r\n“详细信息”:[\r\n {\r\n“代码”:“缺少JsonReferenceId”,\r\n
“消息”:“缺少引用ID的值。路径属性。子网[0]。属性。路由表。"\r\n }\r\n ]\r\n}\r\n}"}]}}
这对我来说真的是个好消息,因为至少我现在有了一个错误!
更新#2
subnets: [
{
name: 'CloudGuardExternal'
properties: {
addressPrefix: '10.156.0.0/24'
routeTable: routeTableNumberOne.properties.routes[0]
}
}
]
我尝试了上面的方法,这次得到了不同的错误消息:
{“status”:“Failed”,“error”:{“code”:“DeploymentFailed”,“message”:“至少一个资源部署操作失败。请列出部署操作以了解详细信息。有关用法的详细信息,请参阅https://aka.ms/DeployOperations。",“details”:[{“code”:“BadRequest”,“message”:“{\r\n“error”:{\r\n“代码”:“无效请求格式”,\r\n
“消息”:“无法分析请求。",\r\n“详细信息”:[\r\n {\r\n“代码”:“无效的JSON引用错误类型”,\r\n
“消息”:“引用ID /subscriptions/ee 8bbd 18 -7563- 42 cd-b616 - 53841 d3 f3 b28/resourceGroups/hub/providers/Microsoft.Network/routeTables/routelol/routs/dropPacketTestRoute引用的资源类型错误。ID应引用类型为routeTables的资源。路径属性。子网[0].属性. routeTable。"\r\n}\r\n ]\r\n }\r\n}"}]}}
更新#3
我尝试了以下方法
subnets: [
{
name: 'CloudGuardExternal'
properties: {
addressPrefix: '10.156.0.0/24'
routeTable: {
properties: {
routes: [
{
properties: {
addressPrefix: '10.0.0.0/8'
nextHopType: 'None'
}
}
]
}
}
}
}
]
但这一次,得到了以下错误消息
{“status”:“Failed”,“error”:{“code”:“DeploymentFailed”,“message”:“至少一个资源部署操作失败。请列出部署操作以了解详细信息。有关用法的详细信息,请参阅https://aka.ms/DeployOperations。",“details”:[{“code”:“BadRequest”,“message”:“{\r\n“error”:{\r\n“代码”:“无效请求格式”,\r\n
“消息”:“无法分析请求。",\r\n“详细信息”:[\r\n {\r\n“代码”:“缺少JsonReferenceId”,\r\n
“消息”:“缺少引用ID的值。路径属性。子网[0]。属性。路由表。"\r\n }\r\n ]\r\n}\r\n}"}]}}
更新4
subnets: [
{
name: 'CloudGuardExternal'
properties: {
addressPrefix: '10.156.0.0/24'
routeTable: {
id: 'nameonecool'
properties: {
routes: [
{
properties: {
addressPrefix: '10.0.0.0/8'
nextHopType: 'None'
}
}
]
}
}
}
}
]
现在,我得到这个错误:
{“status”:“Failed”,“error”:{“code”:“DeploymentFailed”,“message”:“至少一个资源部署操作失败。请列出部署操作以了解详细信息。有关用法的详细信息,请参阅https://aka.ms/DeployOperations。",“details”:[{“code”:“BadRequest”,“message”:“{\r\n“error”:{\r\n“代码”:“链接无效属性ID”,\r\n
“消息”:“路径“properties.subnets[0]. www.example.com”中的属性ID“nameonecool”properties.routeTable.id无效。应为以“/subscriptions/{subscriptionId}”或“/providers/{resourceProviderNamespace}/”开头的完全限定资源ID。"\r\n }\r\n}"}]}}
好吧,至少这个错误看起来是独一无二的!
2条答案
按热度按时间jq6vz3qz1#
必须像这样使用resourceId。
ffx8fchx2#
您可以使用
routeTableNumberOne.id
直接在模板中获取Route Table资源ID,而无需调用resourceId()函数。依赖关系也会自动添加(创建VNET之前,路由表必须存在)。
因此,您的模板应如下所示: