Release-Pipeline 中的 ARM 模板函数出错
Error in ARM template function in Release-Pipeline
我的 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)
似乎带有模板函数的部分没有被执行,因为该函数没有被翻译成合适的value.Does任何人都知道这个模板函数没有在发布的运行时执行的问题管道?`
更新:
部署前 DefaultValue 部件是这样替换的:
我替换了字符串的特定部分(正则表达式)以使其动态化
(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')]"
因为您想替换字符串的特定部分(正则表达式)以使其动态化。您可以像这样更改替换脚本:
(Get-Content $file.FullName -Raw) -replace "\/subscriptions\/(.*?)\/resourceGroups\/(.*?)\/providers(\/.*)`"",'[concat(resourceGroup().id, ''/providers'', '''')]"' | Set-Content $file.FullName
以上脚本会将相关字符串替换成这样"[concat(resourceGroup().id, '/providers', '/Microsoft.Web/connections/sql25')]"
,
我的 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)
似乎带有模板函数的部分没有被执行,因为该函数没有被翻译成合适的value.Does任何人都知道这个模板函数没有在发布的运行时执行的问题管道?`
更新:
部署前 DefaultValue 部件是这样替换的:
我替换了字符串的特定部分(正则表达式)以使其动态化
(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')]"
因为您想替换字符串的特定部分(正则表达式)以使其动态化。您可以像这样更改替换脚本:
(Get-Content $file.FullName -Raw) -replace "\/subscriptions\/(.*?)\/resourceGroups\/(.*?)\/providers(\/.*)`"",'[concat(resourceGroup().id, ''/providers'', '''')]"' | Set-Content $file.FullName
以上脚本会将相关字符串替换成这样"[concat(resourceGroup().id, '/providers', '/Microsoft.Web/connections/sql25')]"
,