Como alternativa à lista de condições simples no Cloud Assembly, o editor avançado permite montar expressões de critérios mais complexas para controlar quando a ação está disponível.

Ao criar uma nova ação de recurso, selecione Requer uma condição e Usar editor avançado. Em seguida, insira a expressão de critérios que você deseja.

Editor avançado de critérios de ações personalizadas

A expressão é uma cláusula ou uma lista de cláusulas, cada uma delas no formato chave-operador-valor. A figura anterior mostra critérios onde o destino deve ser ligado e estar presente.

Cláusulas

Cláusula Descrição Exemplo
e Todas as subcláusulas devem ser verdadeiras para que o resultado da expressão seja verdadeiro.

Avalie como verdadeiro somente quando properties.powerState estiver LIGADO e syncStatus não estiver AUSENTE.

matchExpression:
  - and:
      - key: properties.powerState
        operator: eq
        value: ON
      - key: syncStatus
        operator: notEq
        value: MISSING
ou Uma ou mais subcláusulas devem ser verdadeiras para que o resultado da expressão seja verdadeiro.

Avalie como verdadeiro se properties.powerState estiver LIGADO ou DESLIGADO.

matchExpression:
  - or:
      - key: properties.powerState
        operator: eq
        value: ON
      - key: properties.powerState
        operator: eq
        value: OFF

Operadores

Operador Descrição Exemplo
eq Igual. Procure uma combinação exata.

Avalie como verdadeiro quando properties.powerState estiver LIGADO.

matchExpression:
  - and:
      - key: properties.powerState
        operator: eq
        value: ON
notEq Não igual. Evite uma combinação exata.

Avalie como verdadeiro quando properties.powerState não estiver DESLIGADO.

matchExpression:
  - and:
      - key: properties.powerState
        operator: notEq
        value: OFF
hasAny Procure uma combinação em uma coleção de objetos.

Avalie como verdadeiro quando a matriz storage.disks inclui um objeto 100 IOPS EBS.

matchExpression:
  - key: storage.disks
    operator: hasAny
    value:
      matchExpression: 
        - and:
            - key: iops
              operator: eq
              value: 100
            - key: service
              operator: eq
              value: ebs
in Procure uma combinação em um conjunto de valores.

Avalie como verdadeiro quando properties.powerState estiver DESLIGADO ou SUSPENSO.

matchExpression:
  - and:
      - key: properties.powerState
        operator: in
        value: OFF, SUSPEND
notIn Evite corresponder a um conjunto de valores.

Avalie como verdadeiro quando properties.powerState não estiver DESLIGADO nem SUSPENSO.

matchExpression:
  - and:
      - key: properties.powerState
        operator: notIn
        value: OFF, SUSPEND
greaterThan Procure uma combinação acima de um determinado limite. Aplica-se apenas a valores numéricos.

Avalie como verdadeiro quando o primeiro objeto na matriz storage.disks tiver IOPS sobre 50.

matchExpression:
  - and:
      - key: storage.disks[0].iops
        operator: greaterThan
        value: 50
lessThan Procure uma combinação sob um determinado limite. Aplica-se apenas a valores numéricos.

Avalie como verdadeiro quando o primeiro objeto na matriz storage.disks tiver IOPS sob 200.

matchExpression:
  - and:
      - key: storage.disks[0].iops
        operator: lessThan
        value: 200
greaterThanEquals Procure uma combinação em ou acima de um determinado limite. Aplica-se apenas a valores numéricos.

Avalie como verdadeiro quando o primeiro objeto na matriz storage.disks tiver IOPS de 100 ou superior.

matchExpression:
  - and:
      - key: storage.disks[0].iops
        operator: greaterThanEquals
        value: 100
lessThanEquals Procure uma combinação em ou abaixo de um determinado limite. Aplica-se apenas a valores numéricos.

Avalie como verdadeiro quando o primeiro objeto na matriz storage.disks tiver IOPS de 100 ou inferior.

matchExpression:
  - and:
      - key: storage.disks[0].iops
        operator: lessThanEquals
        value: 100
matchesRegex Use uma expressão regular para procurar uma combinação.

Avalie como verdadeiro quando a properties.zone for us-east-1a ou us-east-1c.

matchExpression:
  - and:
      - key: properties.zone
        operator: matchesRegex
        value: (us-east-1)+(a|c){1,2}

Exemplos

A expressão de critérios a seguir é avaliada como verdadeira quando properties.tags inclui uma tag de chave key1 e valor value1.

A expressão externa usa hasAny porque properties.tags é uma matriz e você deseja avaliar como verdadeiro sempre que key1=value1 aparece em qualquer um dos pares chave-valor na matriz.

Na expressão interna, há duas cláusulas: uma para o campo de chave e uma para o campo de valor. A matriz properties.tags contém pares de marcação chave-valor e você precisa corresponder aos campos chave e valor.

matchExpression:
  - key: properties.tags
    operator: hasAny
    value:
      matchExpression:
        - and:
            - key: key
              operator: eq
              value: key1
            - key: value
              operator: eq
              value: value1

A expressão de critérios a seguir é semelhante ao exemplo anterior, mas agora é avaliada como verdadeira sempre que properties.tags incluir uma tag de key1=value1 ou 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