【发布时间】:2021-01-27 14:58:43
【问题描述】:
我正在定义一些参数来在我的 ARM 模板中配置我的 SQL 数据库弹性池。我想为每个参数指定默认值,第二个和第三个参数的默认值基于第一个参数的值。但是,每当我尝试将表达式指定为具有允许值集的参数的默认值时,我都会遇到错误:“此值不是参数'...'的允许值之一。”对于具有非字符串类型的参数也会发生同样的情况:“参数 '...' 必须是 '...' 类型。”。
我可以通过消除允许的值并将所有参数类型更改为字符串来解决此问题。但是,这将失去对用户输入值的验证。定义默认值时我做错了什么,还是这是 ARM 限制?
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"sqlSkuName": {
"type": "string",
"allowedValues": [
"BasicPool",
"StandardPool",
"PremiumPool"
],
"defaultValue": "StandardPool"
},
"sqlSkuTier": {
"type": "string",
"allowedValues": [
"Basic",
"Standard",
"Premium"
],
"defaultValue": "[if(equals(parameters('sqlSkuName'), 'BasicPool'), 'Basic',
if(equals(parameters('sqlSkuName'), 'StandardPool'), 'Standard',
if(equals(parameters('sqlSkuName'), 'PremiumPool'), 'Premium',
'')))]"
},
"sqlDatabaseMaxCapacity": {
"type": "int",
"defaultValue": "[if(equals(parameters('sqlSkuName'), 'BasicPool'), 5, 50)]"
},
}
}
【问题讨论】:
标签: azure azure-resource-manager arm-template