ARM:使用copy将数据库名称数组中的连接字符串添加到应用程序



在我的ARM中,我有一个带有多个连接字符串的网站。我有一个变量,它是数据库名称的数组。我正在尝试使用copy函数将连接字符串从该数组添加到网站。

这是资源:

{
"name": "[variables('AppName')]",
"type": "Microsoft.Web/sites",
"location": "[resourceGroup().location]",
"apiVersion": "2015-08-01",
"dependsOn": [
"[resourceId('Microsoft.Web/serverfarms', variables('AppPlanName'))]"
],
"tags": {
"[concat('hidden-related:', resourceId('Microsoft.Web/serverfarms', variables('AppPlanName')))]": "Resource",
"displayName": "Web App"
},
"properties": {
"name": "[variables('AppName')]",
"serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('AppPlanName'))]",
"httpsOnly": true,
"siteConfig": {
"connectionStrings": [
{
"name": "variables('databasesNames')[copyIndex()]",
"connectionString": "[concat('Server=tcp:', variables('SqlServerName'), '.database.windows.net,1433;Initial Catalog=',variables('databasesNames')[copyIndex()], ';Persist Security Info=False;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;User ID=', variables('dbAdminLogin'), ';Password=', variables('singleQuote'), parameters('serverAdminLoginPassword'), variables('singleQuote'), ';')]",
"copy": {
"name": "loopingConnectionStrings",
"count": "[length(variables('databasesNames'))]"
}
}
]
}
},

这给了我以下错误:

此位置不需要模板函数"copyIndex"。该功能只能在具有指定复制的资源中使用

很遗憾,我不能在那里使用copy。有人能证实这一点、纠正错误或建议另一种方法吗?

查看文档,有可能:ARM模板中的属性迭代

这应该适用于您的情况:

"siteConfig": {
"copy": [
{
"name": "connectionStrings",
"count": "[length(variables('databasesNames'))]",
"input": {
"name": "[variables('databasesNames')[copyIndex('connectionStrings')]]",
"connectionString": "[format('Server=tcp:{0}.database.windows.net,1433;Initial Catalog={1};Persist Security Info=False;MultipleActiveResultSets=False;Encrypt=True;TrustServerCertificate=False;Connection Timeout=30;User ID={2};Password={3}{4}{5};', variables('SqlServerName'), variables('databasesNames')[copyIndex('connectionStrings')], variables('dbAdminLogin'), variables('singleQuote'), parameters('serverAdminLoginPassword'), variables('singleQuote'))]"
}
}
]
}

另一方面,你应该看看Bicep,它提供了一个更好的语法,特别是对于循环:Bicep中的迭代循环

最新更新