我使用visual studio代码创建了azure逻辑应用程序单租户项目,遵循本文档。然后根据我的需求创建了工作流,其中包含了数据工厂管道和发送网格的动作。
工作流包含创建管道运行数据工厂操作中的硬编码值。
"Create_a_pipeline_run": {
"inputs": {
"host": {
"connection": {
"referenceName": "azuredatafactory_5"
}
},
"method": "post",
"path": "/subscriptions/@{encodeURIComponent('xxxxxxx-xxxx-xxxx-xxxx-xxxxxx')}/resourcegroups/@{encodeURIComponent('xxxxx')}/providers/Microsoft.DataFactory/factories/@{encodeURIComponent('xxxxxx')}/pipelines/@{encodeURIComponent('xxxxxxx')}/CreateRun",
"queries": {
"x-ms-api-version": "2017-09-01-preview"
}
},
"runAfter": {},
"type": "ApiConnection"
},
和connections.json
文件如下:
"managedApiConnections": {
"sendgrid": {
"api": {
"id": "/subscriptions/@appsetting('WORKFLOWS_SUBSCRIPTION_ID')/providers/Microsoft.Web/locations/centralus/managedApis/sendgrid"
},
"authentication": {
"type": "ManagedServiceIdentity"
}
},
"azuredatafactory_5": {
"api": {
"id": "/subscriptions/@appsetting('WORKFLOWS_SUBSCRIPTION_ID')/providers/Microsoft.Web/locations/centralus/managedApis/azuredatafactory"
},
"authentication": {
"type": "ManagedServiceIdentity"
}
}
}
以上托管的API连接是指来自azure的现有API连接。但是我想为每个环境创建新的托管API连接(意味着根据环境参数化connections.json
文件中的值)。
谁能告诉我如何在每个环境中参数化workflow.json
文件中的值,并在每个环境中参数化connections.json
文件中的值。
逻辑应用程序标准只是workflowApp
类型的应用程序服务。你可以大量使用appsettings
-
逻辑应用程序参数。
在你的
workflow.json
,你可以使用这样的参数:"Create_a_pipeline_run": { "inputs": { "host": { "connection": { "referenceName": "azuredatafactory_5" } }, "method": "post", "path": "/subscriptions/@{encodeURIComponent(parameters('subscription_id'))}/resourcegroups/...", "queries": { "x-ms-api-version": "2017-09-01-preview" } }, "runAfter": {}, "type": "ApiConnection" }
然后在你的
parameters.json
文件中,引用应用程序设置如下:{ "subscription_id": { "type": "String", "value": "@appsetting('WORKFLOWS_SUBSCRIPTION_ID')" } }
subscription_id
必须定义为app服务中的app设置。 -
逻辑应用连接。以同样的方式,您可以在
connections.json
文件中使用应用程序设置和连接信息参数:{ "managedApiConnections": { "sendgrid": { "api": { "id": "/subscriptions/@appsetting('WORKFLOWS_SUBSCRIPTION_ID')/providers/Microsoft.Web/locations/centralus/managedApis/sendgrid" }, ... "authentication": "@parameters('azure_authentication')" } } }
然后在你的
parameters.json
文件:{ "azure_authentication": { "type": "object", "value": { "type": "ManagedServiceIdentity" } } ... }
这样你可以很容易地卸载所有环境特定的参数到应用程序设置