通过Visual Studio部署Logic App时Salesforce连接器失效问题
问题:Azure Logic App导出后重新部署导致Salesforce连接失效
问题概述
在Azure门户开发Logic App(简称LA),通过UI参数选项卡完成参数化配置,使用手动创建的Salesforce(简称SF)、Common Data Service和Service Bus连接器。通过PowerShell脚本下载LA及其参数文件后,尝试通过Visual Studio重新部署时,SF连接器失效,API连接显示无效。
排查发现
- Visual Studio部署时,ARM模板会尝试创建新的SF连接,且授权步骤失败
- 其他带有SF连接的LA通过Visual Studio部署正常,仅该通过PowerShell导出后重新部署的LA出现问题,不清楚模板中哪部分触发ARM创建新SF连接
ARM模板资源部分
"resources": [ { "type": "Microsoft.Logic/workflows", "apiVersion": "2019-05-01", "name": "[parameters('logicAppName')]", "location": "[parameters('logicAppLocation')]", "dependsOn": [ "[resourceId('Microsoft.Web/connections', parameters('salesforce-3_name'))]" ], "properties": { "definition": { "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#", "contentVersion": "1.0.0.0", "parameters": { "$connections": { "defaultValue": {}, "type": "Object" } }, "triggers": { "When_a_record_is_modified": { "recurrence": { "frequency": "[parameters('When_a_record_is_modifiedFrequency')]", "interval": "[parameters('When_a_record_is_modifiedInterval')]" }, "splitOn": "@triggerBody()?['value']", "type": "ApiConnection", "inputs": { "host": { "connection": { "name": "@parameters('$connections')['salesforce_1']['connectionId']" } }, "method": "get", "path": "/datasets/default/tables/@{encodeURIComponent(encodeURIComponent('Account'))}/onupdateditems" } } }, "actions": {}, "outputs": {} }, "parameters": { "$connections": { "value": { "salesforce_1": { "id": "[concat('/subscriptions/',subscription().subscriptionId,'/providers/Microsoft.Web/locations/',parameters('logicAppLocation'),'/managedApis/salesforce')]", "connectionId": "[resourceId('Microsoft.Web/connections', parameters('salesforce-3_name'))]", "connectionName": "[parameters('salesforce-3_name')]" } } } } }, "tags": { "displayName": "[parameters('displayName_Tag')]" } }, { "type": "Microsoft.Web/connections", "apiVersion": "2016-06-01", "location": "[parameters('logicAppLocation')]", "name": "[parameters('salesforce-3_name')]", "properties": { "api": { "id": "[concat('/subscriptions/',subscription().subscriptionId,'/providers/Microsoft.Web/locations/',parameters('logicAppLocation'),'/managedApis/salesforce')]" }, "displayName": "[parameters('salesforce-3_displayName')]", "parameterValues": { "token:LoginUri": "[parameters('salesforce-3_token:LoginUri')]", "salesforceApiVersion": "[parameters('salesforce-3_salesforceApiVersion')]" } } } ]
参数文件内容
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#", "contentVersion": "1.0.0.0", "parameters": { "logicAppName": { "value": "param-dynamicexpression" }, "When_a_record_is_modifiedFrequency": { "value": "Month" }, "When_a_record_is_modifiedInterval": { "value": 3 }, "displayName_Tag": { "value": "LogicApp" }, "salesforce-3_name": { "value": "salesforce-3" }, "salesforce-3_displayName": { "value": "Salesforce" }, "salesforce-3_token:LoginUri": { "value": "https://test.salesforce.com" }, "salesforce-3_salesforceApiVersion": { "value": "v50" } } }
已尝试操作
- 移除LoginUri链接
- 更新参数
以上操作均无效,每次部署后原本正常的连接都会失效
解决方案建议
复用现有连接,移除模板中的连接资源定义:模板中包含了
Microsoft.Web/connections类型的SF连接资源,部署时ARM会尝试创建或更新该连接。如果要使用已有的手动创建的连接,直接删除模板中的这个Microsoft.Web/connections资源块,同时确保Logic App的$connections参数里的connectionId指向现有连接的正确ID。添加连接创建条件:如果需要保留模板中的连接资源,但仅在连接不存在时创建,给
Microsoft.Web/connections资源添加condition属性,避免覆盖已授权的现有连接:"condition": "[not(contains(resourceIds('Microsoft.Web/connections'), parameters('salesforce-3_name')))]"确认部署模式:在Visual Studio部署时,检查使用的是增量部署还是完整部署。增量部署只会添加/更新模板中定义的资源,而完整部署会删除模板未定义的资源,但当前问题核心是模板包含连接资源导致创建新连接,所以重点还是处理连接资源的定义。
验证连接名称匹配:确保参数文件中
salesforce-3_name的值与现有手动创建的SF连接名称完全一致,否则模板会创建新的连接。
内容的提问来源于stack exchange,提问作者Mariya Susnerwala
相关产品推荐
相关产品推荐

