如何将工作流附加到Logic Apps Standard的ARM模板实现完整部署?
解决Logic Apps Standard ARM模板部署工作流的问题
要在ARM模板中同步部署工作流,核心是在模板中添加工作流嵌套资源,将工作流的JSON定义嵌入到Microsoft.Logic/workflows资源的definition属性中。以下是完整的实现方案和代码片段:
核心实现逻辑
- 先部署Logic Apps Standard的基础环境(即
Microsoft.Web/sites资源) - 添加依赖于基础环境的
Microsoft.Logic/workflows资源,每个工作流对应一个该资源 - 将工作流的JSON定义直接嵌入到资源的
definition字段中,或通过变量/参数引用
完整ARM模板代码片段
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "resources": [ // 1. 部署Logic Apps Standard基础环境 { "type": "Microsoft.Web/sites", "apiVersion": "2022-03-01", "name": "[variables('logicAppName')]", "location": "[resourceGroup().location]", "kind": "functionapp,workflowapp", "properties": { "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]", "siteConfig": { "appSettings": [ { "name": "WORKFLOW_MANAGEMENT_BASE_URI", "value": "https://management.azure.com/" }, { "name": "WEBSITE_CONTENTAZUREFILECONNECTIONSTRING", "value": "[concat('DefaultEndpointsProtocol=https;AccountName=', variables('storageAccountName'), ';AccountKey=', listKeys(resourceId('Microsoft.Storage/storageAccounts', variables('storageAccountName')), '2021-06-01').keys[0].value)]" }, { "name": "WEBSITE_CONTENTSHARE", "value": "[toLower(variables('logicAppName'))]" } ] } } }, // 2. 部署工作流(示例为状态型工作流) { "type": "Microsoft.Logic/workflows", "apiVersion": "2019-05-01", "name": "[concat(variables('logicAppName'), '/', variables('workflowName'))]", "location": "[resourceGroup().location]", "dependsOn": [ "[resourceId('Microsoft.Web/sites', variables('logicAppName'))]" ], "properties": { "state": "Enabled", "definition": { // 替换为你实际的工作流JSON定义 "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#", "contentVersion": "1.0.0.0", "parameters": {}, "triggers": { "Recurrence": { "type": "Recurrence", "recurrence": { "frequency": "Minute", "interval": 5 }, "evaluatedRecurrence": { "frequency": "Minute", "interval": 5 } } }, "actions": { "Compose": { "type": "Compose", "inputs": "Hello from deployed workflow", "runAfter": {} } }, "outputs": {} }, "kind": "Stateful" } } ], "variables": { "logicAppName": "my-standard-logic-app", "hostingPlanName": "my-app-service-plan", "storageAccountName": "mylogicappstorage", "workflowName": "MyFirstWorkflow" } }
关键细节说明
- 资源命名规则:工作流资源名称格式为
[逻辑应用名称]/[工作流名称],这是嵌套资源的要求 - 依赖关系:必须通过
dependsOn指定工作流依赖于Logic Apps基础环境,确保部署顺序正确 - 工作流类型:根据实际需求设置
kind为Stateful(状态型)或Stateless(无状态) - 定义复用:如果需要维护多个工作流,可将工作流定义放到
variables中统一管理,再通过[variables('xxx')]引用 - 参数处理:若工作流包含自定义参数,可在ARM模板的
parameters节点定义,再通过[parameters('xxx')]注入到工作流的parameters字段中
内容的提问来源于stack exchange,提问作者LetsGrabSomeBooty
相关产品推荐
相关产品推荐

