В качестве альтернативы обычному списку условий в 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