我想问是否可以通过参数化连接将LogicApp消费部署到azure, 目前我正在使用任务:
- task: AzureResourceManagerTemplateDeployment@3
displayName: "Deploy ARM template"
inputs:
azureResourceManagerConnection: $(connectionName)
subscriptionName: $(subscriptionId)
resourceGroupName: $(resourceGroupName)
location: $(location)
csmFile: $(Pipeline.Workspace)/armtemplate/**/workflow.json
csmParametersFile: $(Pipeline.Workspace)/armtemplate/**/parameters.json
deploymentMode: "Incremental"
overrideParameters: -subscriptionId $(subscriptionId) -resourceGroupName $(resourceGroupName) -location $(locationParameter)
此任务正确部署我的逻辑应用,但没有参数 我的工作流程.json 如下所示: 我收到这种错误: #[error]LinkedAuthorizationFailed:客户端有权在范围“/subscriptions/xxxxx/resourcegroups/xxxx/providers/Microsoft.Logic/workflows/LogicAppTestDeploy2”上执行操作“Microsoft.Web/connections/join/action”,但是链接的找不到订阅“[parameters('subscriptionId')]”。
我做错了什么吗?或者甚至可以使连接参数化吗?
谢谢您的回答
ARM 模板正在引用名为“sharepointonline-01”的 API 连接资源,该资源应该预先存在,您也可以将其与逻辑应用工作流程一起部署 (https://learn.microsoft.com/en-us/azure/templates/microsoft.web/connections?pivots=deployment-language-arm-template)。
您收到此错误是因为您的参数化字符串“id”不是有效的 ARM。要获得所需的结果,您可以使用 concat 函数。
但是,由于您引用的是现有资源,因此请使用 ARM 中可用的资源函数之一来引用资源:(https://learn.microsoft.com/en-us/azure/azure-resource-manager/templates/模板函数资源#subscriptionresourceid)
要得到这样的东西:
"sharepointonline": {
"connectionId": "[resourceId('Microsoft.Web/connections', 'sharepointonline-1')]",
"id": "[subscriptionResourceId('Microsoft.Web/locations/managedApis', parameters('location'), 'sharepointonline')]",
}