我正在从ARM模板部署应用程序服务。模板的精简版本如下所示:
{
"$schema": "http://schema.management.azure.com/schemas/2014-04-01-preview/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"inventoryObject": {
"type": "object"
},
"variables": {
"commonAppSettings": [
{
"name": "AppSetting1",
"value": "Value1"
}
]
},
"resources": [
{
"apiVersion": "2018-11-01",
"name": "[parameters('inventoryObject').name]",
"location": "[parameters('inventoryObject').location]",
"kind": "app",
"type": "Microsoft.Web/sites",
"properties": {
"name": "[parameters('inventoryObject').name]",
"siteConfig": {
"appSettings": "[concat(variables('commonAppSettings'), parameters('inventoryObject').appSettings, createarray(json(concat('{\"name\": \"APPINSIGHTS_INSTRUMENTATIONKEY\", \"value\": \"', reference(variables('appInsightsResourceId'), '2015-05-01').InstrumentationKey, '\"}')), json(concat('{\"name\": \"APPLICATIONINSIGHTS_CONNECTION_STRING\", \"value\": \"', reference(variables('appInsightsResourceId'), '2015-05-01').ConnectionString, '\"}'))))]"
}
}
}
]
}
对于我的“应用程序设置”部分,我需要将每个实例的唯一数据(作为参数传递给模板的清单对象),变量(commonAppSettings)的常规数据和先前部署的资源的参考数据进行组合。因为只能在参考资料部分中使用引用函数,所以我想出了一种相当麻烦的方式将所有三种类型的数据组合到一条语句中。它可以按预期工作,但很难读取维护内容。
有更好的方法吗?