ARM模板中如何将字面量数组与参数传入的数组合并为appSettings
实现ARM模板中appSettings数组合并的方案
核心通过ARM模板原生的concat函数实现数组拼接,配合数组项的先后顺序控制重复配置的优先级即可,无需依赖额外扩展。
1. 适用逻辑说明
- 无重复配置项场景:直接拼接内置固定配置和外部传入的配置数组即可
- 存在重复配置项场景:数组中靠后的同key配置会覆盖靠前的配置,可通过调整
concat的参数顺序控制优先级:- 希望外部传入配置优先级更高:外部数组放在
concat参数的末尾 - 希望模板内置固定配置优先级更高:内置数组放在
concat参数的末尾
- 希望外部传入配置优先级更高:外部数组放在
2. 完整示例模板片段
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "additionalAppSettings": { "type": "array", "defaultValue": [], "metadata": { "description": "外部传入的额外站点配置数组" } } }, "variables": { // 模板内部字面量定义的固定配置 "builtinAppSettings": [ { "name": "ASPNETCORE_ENVIRONMENT", "value": "Production" }, { "name": "WEBSITE_RUN_FROM_PACKAGE", "value": "1" } ], // 合并后的最终配置,此处外部配置优先级更高,可按需调整参数顺序 "finalAppSettings": "[concat(variables('builtinAppSettings'), parameters('additionalAppSettings'))]" }, "resources": [ { "type": "Microsoft.Web/sites", "apiVersion": "2021-02-01", "name": "你的站点名称", "location": "[resourceGroup().location]", "properties": { "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', '你的应用服务计划名称')]", "siteConfig": { "appSettings": "[variables('finalAppSettings')]" } } } ] }
内容的提问来源于stack exchange,提问作者Snooks
相关产品推荐
相关产品推荐

