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