如何在Bicep中为Azure Function按需添加非空配置项
在Azure ARM模板中仅当配置值非空时添加Function App设置项
要实现仅当someApiConfig参数不为空字符串时,才为Azure Function App添加对应的ApiConfig配置项,可以利用ARM模板(Bicep)的对象展开运算符或union函数来实现条件性配置合并,两种方案如下:
方案1:使用对象展开运算符(推荐)
直接在properties中通过条件判断生成目标对象,再用...运算符展开,空对象展开后不会产生任何额外配置项:
param functionAppName string param someApiConfig string = '' resource defaultFunctionAppAppsettings 'Microsoft.Web/sites/config@2018-11-01' = { name: '${functionAppName}/appsettings' properties: { FUNCTIONS_EXTENSION_VERSION: 'v4' FUNCTIONS_WORKER_RUNTIME: 'dotnet' // 其他固定配置项写在这里 ...(someApiConfig != '' ? { ApiConfig: someApiConfig } : {}) } }
方案2:使用union函数合并对象
将固定配置项和条件生成的配置项通过union函数合并,当参数为空时,条件对象为空,合并后不会添加额外项:
param functionAppName string param someApiConfig string = '' resource defaultFunctionAppAppsettings 'Microsoft.Web/sites/config@2018-11-01' = { name: '${functionAppName}/appsettings' properties: union( { FUNCTIONS_EXTENSION_VERSION: 'v4' FUNCTIONS_WORKER_RUNTIME: 'dotnet' // 其他固定配置项 }, someApiConfig != '' ? { ApiConfig: someApiConfig } : {} ) }
两种方案的核心逻辑一致:通过三元运算符判断参数是否为空,生成对应配置对象(或空对象),再将其合并到基础配置中,从而实现仅在参数有效时添加目标配置项的效果。
内容的提问来源于stack exchange,提问作者Anna Melashkina
相关产品推荐
相关产品推荐

