使用ARM模板创建含工作流的标准Logic App遇异常,求助解决
解决标准Logic App ARM模板带工作流的问题
核心问题
你单独声明microsoft.logic/workflows资源,会自动创建消耗型Logic App工作流,这就是额外生成消耗型资源的原因。标准Logic App的工作流是作为标准Logic App资源的子资源存在的,不能单独在顶层声明。
正确的ARM模板结构
1. 标准Logic App主资源+嵌套工作流示例
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "logicAppName": { "type": "string", "defaultValue": "my-standard-logic-app" }, "workflowName": { "type": "string", "defaultValue": "my-embedded-workflow" }, "location": { "type": "string", "defaultValue": "[resourceGroup().location]" }, "hostingPlanName": { "type": "string", "defaultValue": "logic-app-hosting-plan" }, "storageAccountName": { "type": "string", "defaultValue": "mylogicappstorage" } }, "resources": [ // 存储账户资源 { "type": "Microsoft.Storage/storageAccounts", "apiVersion": "2022-05-01", "name": "[parameters('storageAccountName')]", "location": "[parameters('location')]", "sku": { "name": "Standard_LRS" }, "kind": "StorageV2" }, // 应用服务计划资源 { "type": "Microsoft.Web/serverfarms", "apiVersion": "2022-09-01", "name": "[parameters('hostingPlanName')]", "location": "[parameters('location')]", "sku": { "name": "WS1", "tier": "WorkflowStandard" } }, // 标准Logic App主资源(嵌套工作流) { "type": "Microsoft.Web/sites", "apiVersion": "2022-09-01", "name": "[parameters('logicAppName')]", "location": "[parameters('location')]", "kind": "functionapp,workflowapp", "properties": { "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', parameters('hostingPlanName'))]", "siteConfig": { "appSettings": [ { "name": "FUNCTIONS_EXTENSION_VERSION", "value": "~4" }, { "name": "WORKFLOWS_EXTENSION_VERSION", "value": "~1" }, { "name": "AzureWebJobsStorage", "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', parameters('storageAccountName'), ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName')), '2022-05-01').keys[0].value, ';EndpointSuffix=', environment().suffixes.storage)]" } ] } }, "dependsOn": [ "[resourceId('Microsoft.Web/serverfarms', parameters('hostingPlanName'))]", "[resourceId('Microsoft.Storage/storageAccounts', parameters('storageAccountName'))]" ], // 嵌套工作流子资源 "resources": [ { "type": "workflows", "apiVersion": "2022-09-01", "name": "[parameters('workflowName')]", "location": "[parameters('location')]", "dependsOn": [ "[resourceId('Microsoft.Web/sites', parameters('logicAppName'))]" ], "properties": { "definition": { "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#", "actions": { // 示例HTTP操作 "Send_HTTP_Request": { "type": "Http", "inputs": { "method": "GET", "uri": "https://example.com/api/test" }, "runAfter": {} } }, "triggers": { // 示例 recurrence 触发器 "Recurrence_Trigger": { "type": "Recurrence", "recurrence": { "frequency": "Hour", "interval": 1 } } }, "outputs": {} }, "state": "Enabled" } } ] } ] }
2. 必须遵守的规则
- 标准Logic App的资源类型是
Microsoft.Web/sites,kind必须设置为functionapp,workflowapp - 工作流是
Microsoft.Web/sites/workflows子资源,必须嵌套在主资源的resources数组内,禁止单独在顶层声明 - 移除所有顶层的
microsoft.logic/workflows资源,彻底避免生成消耗型Logic App - 工作流的
dependsOn必须指向标准Logic App主资源,确保部署顺序正确 - 工作流的
definition需符合官方JSON schema,触发器和操作配置要完整
验证步骤
- 删除模板中所有顶层的
microsoft.logic/workflows资源 - 确认工作流是作为
Microsoft.Web/sites的子资源存在 - 部署模板后,进入标准Logic App的工作流列表,即可看到定义的工作流
- 检查资源组,不会再生成额外的消耗型Logic App
内容的提问来源于stack exchange,提问作者user11862874
相关产品推荐
相关产品推荐

