如何对Azure Logic App Standard项目的workflow.json和connections.json参数化
Azure Logic App单租户按环境参数化配置方案
1. workflow.json参数化实现
- 首先在workflow.json根节点新增
parameters定义,把所有环境相关的硬编码值都声明为参数,示例代码如下:
"parameters": { "adfSubscriptionId": { "type": "string", "defaultValue": "@appsetting('ADF_SUBSCRIPTION_ID')" }, "adfResourceGroup": { "type": "string", "defaultValue": "@appsetting('ADF_RG_NAME')" }, "adfFactoryName": { "type": "string", "defaultValue": "@appsetting('ADF_INSTANCE_NAME')" }, "adfPipelineName": { "type": "string", "defaultValue": "@appsetting('ADF_PIPELINE_NAME')" } }
也可以填写本地调试用的固定值作为默认值,部署时再替换为环境对应值。
- 替换原来硬编码的
Create_a_pipeline_run节点的path属性,修改后如下:
"path": "/subscriptions/@{encodeURIComponent(parameters('adfSubscriptionId'))}/resourcegroups/@{encodeURIComponent(parameters('adfResourceGroup'))}/providers/Microsoft.DataFactory/factories/@{encodeURIComponent(parameters('adfFactoryName'))}/pipelines/@{encodeURIComponent(parameters('adfPipelineName'))}/CreateRun",
部署时不同环境的参数值可以通过CI/CD流水线的变量替换功能,或者ARM/Bicep部署参数传入,若参数默认值绑定了@appsetting,只需在对应环境的Logic App应用配置中添加对应键值对即可。
2. connections.json参数化实现
有两种常用实现方式,可根据场景选择:
方式一:使用内置@appsetting表达式引用环境配置
把connections.json中所有环境相关的字段都替换为@appsetting引用,示例修改后的connections.json如下:
"managedApiConnections": { "sendgrid": { "api": { "id": "/subscriptions/@appsetting('WORKFLOWS_SUBSCRIPTION_ID')/providers/Microsoft.Web/locations/@appsetting('AZURE_REGION')/managedApis/sendgrid" }, "authentication": { "type": "ManagedServiceIdentity" } }, "azuredatafactory_5": { "api": { "id": "/subscriptions/@appsetting('WORKFLOWS_SUBSCRIPTION_ID')/providers/Microsoft.Web/locations/@appsetting('AZURE_REGION')/managedApis/azuredatafactory" }, "authentication": { "type": "ManagedServiceIdentity" } }
修改完成后在对应环境的Logic App应用配置中,添加AZURE_REGION、WORKFLOWS_SUBSCRIPTION_ID等键的对应环境值即可生效。
方式二:CI/CD流水线变量替换
如果有更多复杂的环境差异化配置,可以在connections.json中使用占位符(比如__AZURE_REGION__),在各环境的CI/CD部署步骤中新增变量替换任务,将占位符替换为对应环境的实际值。
内容的提问来源于stack exchange,提问作者Pradeep
相关产品推荐
相关产品推荐

