如何在Logic App Standard中更新环境专属的parameters.json文件
针对Logic App Standard的parameters.json配置管理方案
一、直接更新parameters.json的方法(类似Function App更新appsettings)
你可以通过以下两种方式实现类似Function App更新appsettings的效果:
1. 部署前用DevOps任务替换参数值
在Azure DevOps中使用Replace Tokens任务,提前将parameters.json中的环境专属值替换为环境变量:
- 先将parameters.json中的值改为令牌格式:
{ "azureFunctionOperation-1-ResourceGroup": { "type": "String", "value": "#{ResourceGroup}#" }, "azureFunctionOperation-1-SiteName": { "type": "String", "value": "#{SiteName}#" }, "azureFunctionOperation-1-TriggerUrl": { "type": "String", "value": "#{TriggerUrl}#" } } - 在DevOps变量组中配置对应环境(dev/test/prod等)的变量值
- 执行Replace Tokens任务完成令牌替换,再用Function App部署任务发布压缩包
2. 使用Azure CLI直接更新已部署的工作流参数
对于已上线的Logic App Standard,可通过Azure CLI命令直接更新工作流参数,无需重新部署压缩包:
az rest --method PUT \ --uri "/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Web/sites/{logicAppName}/workflows/{workflowName}/versions/{version}/parameters?api-version=2022-09-01" \ --body '{ "properties": { "parameters": { "azureFunctionOperation-1-ResourceGroup": { "value": "prod-rg" }, "azureFunctionOperation-1-SiteName": { "value": "get-prod" }, "azureFunctionOperation-1-TriggerUrl": { "value": "https://get-prod-xxxx.westeurope-01.azurewebsites.net/api/get-dummy" } } } }'
二、更优的配置管理方案(推荐)
避免维护多环境的parameters.json,建议将所有环境专属配置统一映射到Logic App的应用设置(App Settings),完全复用Function App的配置管理方式:
1. 修改connection.json,直接引用应用设置
将原来的parameters引用替换为appsetting,彻底摆脱对parameters.json的依赖:
"azureFunctionOperation-1": { "function": { "id": "/subscriptions/@{appsetting('WORKFLOWS_SUBSCRIPTION_ID')}/resourceGroups/@{appsetting('azureFunctionOperation-1-ResourceGroup')}/providers/Microsoft.Web/sites/@{appsetting('azureFunctionOperation-1-SiteName')}/functions/Get-Dummy" }, "triggerUrl": "@appsetting('azureFunctionOperation-1-TriggerUrl')", "authentication": { "type": "QueryString", "name": "Code", "value": "@appsetting('azureFunctionOperation_11_functionAppKey')" }, "displayName": "Get" }
2. 通过Bicep或DevOps管理应用设置
- Bicep方式:在Logic App Standard的Bicep模板中定义应用设置,部署时通过参数文件传递不同环境的值:
resource logicApp 'Microsoft.Web/sites@2022-09-01' = { name: logicAppName location: location properties: { serverFarmId: appServicePlanId siteConfig: { appSettings: [ { name: 'azureFunctionOperation-1-ResourceGroup' value: resourceGroupName } { name: 'azureFunctionOperation-1-SiteName' value: functionAppName } { name: 'azureFunctionOperation-1-TriggerUrl' value: functionAppTriggerUrl } ] } } } - DevOps方式:使用Azure App Service Deploy任务的Application and Configuration Settings选项,直接配置或引用变量组中的应用设置值,部署时自动更新。
三、解决Bicep适配Logic App Standard的问题
你之前找到的消费型Logic App方案不适用于Standard,是因为两者的资源类型不同:
- 消费型Logic App的资源类型是
Microsoft.Logic/workflows - Standard型Logic App的资源类型是
Microsoft.Web/sites(本质是App Service)
所以在Bicep中需要针对Microsoft.Web/sites类型配置,通过siteConfig.appSettings管理所有环境配置,完全替代parameters.json的作用。
内容的提问来源于stack exchange,提问作者karthik
相关产品推荐
相关产品推荐

