В качестве альтернативы обычному списку условий в Cloud Assembly расширенный редактор позволяет создавать более сложные выражения критериев для определения условий доступности действия.
При создании нового действия с ресурсом выберите Требуется условие и Использовать расширенный редактор. Затем введите необходимое выражение критериев.
Выражение — это условие или список условий, для каждого из которых используется формат «ключ — оператор — значение». На предыдущем рисунке показаны критерии, при которых целевой объект должен быть в наличии и в работающем состоянии.
Условия
Условие | Описание | Пример |
---|---|---|
и | Чтобы результатом выражения было true (истина), все подусловия должны иметь значение true (истина). | Оценить как true только в том случае, если properties.powerState имеет значение «ВКЛ.», а syncStatus не имеет значения «ОТСУТСТВУЕТ». matchExpression: - and: - key: properties.powerState operator: eq value: ON - key: syncStatus operator: notEq value: MISSING |
или | Чтобы результатом выражения было true (истина), одно или несколько подусловий должны иметь значение true (истина). | Принимает значение true, если properties.powerState имеет значение «ВКЛ.» или «ВЫКЛ.». matchExpression: - or: - key: properties.powerState operator: eq value: ON - key: properties.powerState operator: eq value: OFF |
Операторы
Оператор | Описание | Пример |
---|---|---|
eq | Равно. Поиск точного совпадения. | Принимает значение true, если properties.powerState имеет значение «ВКЛ.». matchExpression: - and: - key: properties.powerState operator: eq value: ON |
notEq | Не равно. Недопущение точного совпадения. | Принимает значение true, если properties.powerState не имеет значение «ВЫКЛ.». matchExpression: - and: - key: properties.powerState operator: notEq value: OFF |
hasAny | Поиск совпадения в группе объектов. | Принимает значение true, если массив storage.disks содержит объект EBS со значением IOPS, равным 100. matchExpression: - key: storage.disks operator: hasAny value: matchExpression: - and: - key: iops operator: eq value: 100 - key: service operator: eq value: ebs |
in | Поиск совпадения в наборе значений. | Принимает значение true, если properties.powerState имеет значение «ВЫКЛ.» либо «ПРИОСТАНОВИТЬ». matchExpression: - and: - key: properties.powerState operator: in value: OFF, SUSPEND |
notIn | Недопущение совпадения набора значений. | Принимает значение true, если properties.powerState не имеет значения «ВЫКЛ.» и не имеет значения «ПРИОСТАНОВИТЬ». matchExpression: - and: - key: properties.powerState operator: notIn value: OFF, SUSPEND |
greaterThan | Поиск совпадения выше заданного порогового значения. Применяется только к числовым значениям. | Принимает значение true, если первый объект в массиве storage.disks имеет значение IOPS больше 50. matchExpression: - and: - key: storage.disks[0].iops operator: greaterThan value: 50 |
lessThan | Поиск совпадения ниже заданного порогового значения. Применяется только к числовым значениям. | Принимает значение true, если первый объект в массиве storage.disks имеет значение IOPS меньше 200. matchExpression: - and: - key: storage.disks[0].iops operator: lessThan value: 200 |
greaterThanEquals | Поиск совпадения, которое больше заданного порогового значения или равно ему. Применяется только к числовым значениям. | Принимает значение true, если первый объект в массиве storage.disks имеет значение IOPS, равное 100 или больше. matchExpression: - and: - key: storage.disks[0].iops operator: greaterThanEquals value: 100 |
lessThanEquals | Поиск совпадения, которое меньше или равно заданному пороговому значению. Применяется только к числовым значениям. | Принимает значение true, если первый объект в массиве storage.disks имеет значение IOPS, равное 100 или меньше. matchExpression: - and: - key: storage.disks[0].iops operator: lessThanEquals value: 100 |
matchesRegex | Использование регулярного выражения для поиска совпадения. | Принимает значение true, если properties.zone имеет значение us-east-1a или us-east-1c. matchExpression: - and: - key: properties.zone operator: matchesRegex value: (us-east-1)+(a|c){1,2} |
Примеры
Следующее выражение критериев принимает значение true, если properties.tags содержит тег ключа key1
и значение value1
.
Во внешнем выражении используется hasAny
, так как properties.tags — это массив, и выражение должно принимать значение true во всех случаях, когда в любой из пар «ключ — значение» в массиве появляется тег key1=value1.
Во внутреннем выражении есть два условия: одно для поля ключа и другое для поля значения. Массив properties.tags содержит пары тегов «ключ — значение», и необходимо совпадение в обоих полях (ключ и значение).
matchExpression: - key: properties.tags operator: hasAny value: matchExpression: - and: - key: key operator: eq value: key1 - key: value operator: eq value: value1
Следующее выражение критериев похоже на предыдущий пример, но принимает значение true во всех случаях, когда properties.tags содержит тег key1=value1 или key2=value2.
matchExpression: - or: - key: properties.tags operator: hasAny value: matchExpression: - and: - key: key operator: eq value: key1 - key: value operator: eq value: value1 - key: properties.tags operator: hasAny value: matchExpression: - and: - key: key operator: eq value: key2 - key: value operator: eq value: value2