Я пытаюсь создать политику Azure, которая будет проверять ресурсы ApplicationInsights в нашем клиенте Azure, значение SamplingPercentage которого больше параметризованного значения. На данный момент для параметра задан тип «Float» (поскольку вы можете указать 33.3
, 12.5
, 8.3
):
{
"mode": "All",
"policyRule": {
"if": {
"allOf": [{
"value": "type",
"equals": "Microsoft.Insights/components"
},
{
"value": "SamplingPercentage",
"greater": "[parameters('Maximum')]"
}]
},
"then": {
"effect": "audit"
}
},
"parameters": {
"Maximum": {
"type": "Float",
"metadata": {
"displayName": "Maximum",
"description": "Sets the maximum allowed sampling percentage."
}
}
}
}
При настройке SamplingPercentage через портал Azure Тем не менее, вам представлен список допустимых опций. Я хотел бы включить их в свойство AllowedValues
параметра Maximum
.
Первой идеей было использование strongType (который, как я предполагаю, побудит портал Azure вводить допустимые значения на основе по типу) ... Я не смог найти такое значение. Вторая попытка окончилась неудачей, так как не представляется возможным создать Array
целых чисел. Третья попытка не удалась, когда я затем изменил Type
параметра *1013* на String
и объявил параметр следующим образом:
"parameters": {
"Maximum": {
"type": "Array",
"metadata": {
"displayName": "Maximum",
"description": "Sets the maximum allowed sampling percentage."
},
"allowedValues": [ "100", "50", "33.3", "25", "12.5", "8.3", "4", "2", "1" ]
}
}
и соответствующее условие
{
"value": "SamplingPercentage",
"greater": "[float(parameters('Maximum'))]"
}
Это приводит к этой ошибке:
Внутреннее исключение 'Функция языка шаблонов' float 'была вызвана с недопустимым параметром. Значение нельзя преобразовать в целевой тип. '
Что я делаю не так?