如何在ARM模板的siteConfig中使用Appsetting_For_Fun_App参数?
ARM模板中Object类型参数转Function App AppSettings格式解决方案
要将Object类型的Appsetting_For_Fun_App参数转换为Function App所需的{name, value}格式数组,直接借助ARM模板内置的keys()函数和for循环遍历即可实现,以下是具体实现步骤和代码示例:
1. 确认参数定义
确保你的参数是标准的Object类型,示例定义如下:
"parameters": { "Appsetting_For_Fun_App": { "type": "object", "defaultValue": { "APPINSIGHTS_KEY": "[reference(resourceId('Microsoft.Insights/components', 'my-app-insights')).InstrumentationKey]", "CUSTOM_SETTING_1": "StaticValue", "CUSTOM_SETTING_2": "[parameters('externalParam')]" }, "metadata": { "description": "自定义的Function App配置键值对" } } }
2. 在Function App资源中转换并注入AppSettings
在Function App的properties.siteConfig.appSettings数组中,通过for循环遍历参数的所有键,将每个键值对转换为要求的格式,同时可保留原有固定配置:
"resources": [ { "type": "Microsoft.Web/sites", "apiVersion": "2022-03-01", "name": "[variables('functionAppName')]", "location": "[resourceGroup().location]", "dependsOn": [ "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]" ], "properties": { "serverFarmId": "[resourceId('Microsoft.Web/serverfarms', variables('hostingPlanName'))]", "siteConfig": { "appSettings": [ // 原有固定配置项 { "name": "FUNCTIONS_EXTENSION_VERSION", "value": "~4" }, { "name": "FUNCTIONS_WORKER_RUNTIME", "value": "dotnet" }, // 转换Object参数为AppSettings格式 "[for (key, index) in keys(parameters('Appsetting_For_Fun_App')): { 'name': key, 'value': parameters('Appsetting_For_Fun_App')[key] }]" ] } } } ]
关键说明
keys(parameters('Appsetting_For_Fun_App')):获取Object参数的所有键名,返回一个字符串数组for (key, index) in ...:遍历键数组,每个键对应生成一个{name, value}对象,其中value直接通过parameters('Appsetting_For_Fun_App')[key]获取对应的值- 该方法会自动处理参数中的动态值(比如引用其他资源的属性、嵌套参数等),无需额外处理
- 如果参数可能为空,建议给
Appsetting_For_Fun_App设置defaultValue: {},避免遍历空对象报错
内容的提问来源于stack exchange,提问作者microset
相关产品推荐
相关产品推荐

