我有一个ARM模板的问题,我用模板函数替换了某个部分。这种情况发生在发布管道的执行过程中。ARM模板是由我添加到发布管道中的Azure Powershell脚本安装的。
以下是抛出错误的相关部分:
"parameters": {
"connections_office365_externalid": {
"defaultValue": "[concat(resourceGroup().id,'/providers')]/Microsoft.Web/connections/office365",
"type": "String"
},
"connections_sql_externalid": {
"defaultValue": "[concat(resourceGroup().id, '/providers')]/Microsoft.Web/connections/sql25",
"type": "String"
}
},
当涉及到ARM模板的部署时,我得到以下错误:
> Status Message: Property id '[concat(resourceGroup().id,
> '/providers')]/Microsoft.Web/connections/office365' at path
> 'properties.parameters.$connections.value.office365.connectionId' is
> invalid. Expect fully qualified resource Id that start with
> '/subscriptions/{subscriptionId}' or
> '/providers/{resourceProviderNamespace}/'.
> (Code:LinkedInvalidPropertyId)
似乎没有执行带有模板函数的部分,因为该函数没有转换为适当的值。有人知道这个模板函数没有在发布管道的运行时执行可能是什么问题吗
更新:
这就是在部署之前如何替换DefaultValue部件:
我替换字符串的特定部分(regex(,使其具有动态
(Get-Content $file.FullName -Raw) -replace "/subscriptions/(.*?)/resourceGroups/customerPrefix(.*?)/providers","[concat(resourceGroup().id, '/providers')]" | Set-Content $file.FullName
如果您要通过逻辑应用程序的ARM模板设置连接,请使用以下内容:
"office365_1": {
"id": "[concat(subscription().id, '/providers/Microsoft.Web/locations/', parameters('logicAppLocation'), '/managedApis/', 'office365')]",
"connectionId": "[resourceId('Microsoft.Web/connections', parameters('office365_1_Connection_Name'))]",
"connectionName": "[parameters('office365_1_Connection_Name')]"
}
您只需要稍微更改替换脚本即可使其工作。见下文:
我测试过,发现表达式[concat(resourceGroup().id,'/providers')]/Microsoft.Web/connections/office365
无法在模板中求值。
正确的表达式应该如下所示:
"defaultValue": "[concat(resourceGroup().id, '/providers', '/Microsoft.Web/connections/office365')]"
因为您想要替换字符串(regex(的特定部分以使其具有动态性。您可以更改替换脚本,如:
(Get-Content $file.FullName -Raw) -replace "/subscriptions/(.*?)/resourceGroups/(.*?)/providers(/.*)`"",'[concat(resourceGroup().id, ''/providers'', ''$3'')]"' | Set-Content $file.FullName
上面的脚本将把相关字符串替换成这样的"[concat(resourceGroup().id, '/providers', '/Microsoft.Web/connections/sql25')]"
,