使用ARM模板部署Logic App时创建Resource Group遇URI匹配错误
ARM模板嵌套部署创建资源组报错解决方案
错误原因
Microsoft.Resources/resourceGroups是订阅级资源,只能在订阅范围的部署中定义。而你当前的嵌套部署指定了resourceGroup参数,属于资源组级部署,无法在资源组级模板内创建订阅级资源,因此触发No HTTP resource was found that matches the request URI错误。
解决方案
将资源组创建逻辑移到订阅级部署中,再嵌套部署NSG和VNet到已创建的资源组,同时添加依赖关系确保执行顺序正确。
修正后的模板示例
{ "$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "nsgName": { "type": "string" }, "nsgResourceGroupName": { "type": "string", "defaultValue": "mydemo" }, "nsgResourceLocation": { "type": "string" }, "vnetName": { "type": "string" }, "vnetLocation": { "type": "string" }, "addressPrefix": { "type": "string" } }, "resources": [ // 1. 先创建订阅级资源组 { "type": "Microsoft.Resources/resourceGroups", "apiVersion": "2021-04-01", "name": "[parameters('nsgResourceGroupName')]", "location": "[parameters('nsgResourceLocation')]", "properties": {} }, // 2. 嵌套部署NSG和VNet到刚创建的资源组 { "type": "Microsoft.Resources/deployments", "apiVersion": "2021-04-01", "name": "[concat(parameters('nsgName'), '-nsg-vnet-deploy')]", "resourceGroup": "[parameters('nsgResourceGroupName')]", "dependsOn": [ "[resourceId('Microsoft.Resources/resourceGroups', parameters('nsgResourceGroupName'))]" ], "properties": { "mode": "Incremental", "template": { "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "nsgName": { "type": "string" }, "nsgResourceLocation": { "type": "string" }, "vnetName": { "type": "string" }, "vnetLocation": { "type": "string" }, "addressPrefix": { "type": "string" } }, "resources": [ { "apiVersion": "2020-05-01", "type": "Microsoft.Network/networkSecurityGroups", "name": "[parameters('nsgName')]", "location": "[parameters('nsgResourceLocation')]", "properties": {}, "tags": { "resourceType": "LogicApps Network Security Groups", "clusterName": "Standard Logic Apps" } }, { "apiVersion": "2020-05-01", "type": "Microsoft.Network/virtualNetworks", "name": "[parameters('vnetName')]", "location": "[parameters('vnetLocation')]", "properties": { "addressSpace": { "addressPrefixes": [ "[parameters('addressPrefix')]" ] } }, "tags": { "resourceType": "Logic Apps", "logicAppNames": "Standard Logic Apps" } } ] }, "parameters": { "nsgName": { "value": "[parameters('nsgName')]" }, "nsgResourceLocation": { "value": "[parameters('nsgResourceLocation')]" }, "vnetName": { "value": "[parameters('vnetName')]" }, "vnetLocation": { "value": "[parameters('vnetLocation')]" }, "addressPrefix": { "value": "[parameters('addressPrefix')]" } } } } ] }
关键注意事项
- 部署该模板必须使用订阅级部署命令:
- Azure CLI:
az deployment sub create --location <部署位置> --template-file <模板路径> - PowerShell:
New-AzSubscriptionDeployment -Location <部署位置> -TemplateFile <模板路径>
- Azure CLI:
- 确保执行部署的账号拥有创建资源组及网络资源的权限
- 原代码中VNet的
properties段存在语法错误(多余逗号),修正后的模板已修复此问题
内容的提问来源于stack exchange,提问作者Neo
相关产品推荐
相关产品推荐

