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.
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