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