Como alternativa a la lista de condiciones simples de Automation Assembler, el editor avanzado permite agrupar expresiones de criterios más complejas para controlar el momento en que la acción debe estar disponible.
Al crear una nueva acción personalizada, seleccione Requiere condición y Usar editor avanzado. A continuación, introduzca la expresión de criterios que desee.
La expresión es una cláusula o una lista de cláusulas, cada una con el formato clave-operador-valor. En la figura anterior, se muestran los criterios en los que el destino debe estar encendido y presente.
Cláusulas
| Cláusula | Descripción | Ejemplo |
|---|---|---|
| and | Todas las subcláusulas deben cumplirse para que el resultado de la expresión sea true. | Se evalúa como true solo cuando el valor de properties.powerState es ON y el valor de syncStatus no es MISSING. matchExpression:
- and:
- key: properties.powerState
operator: eq
value: ON
- key: syncStatus
operator: notEq
value: MISSING
|
| or | Una o varias de las subcláusulas deben cumplirse para que el resultado de la expresión sea true. | Se evalúa como true independientemente de que el valor de properties.powerState sea ON u OFF. matchExpression:
- or:
- key: properties.powerState
operator: eq
value: ON
- key: properties.powerState
operator: eq
value: OFF
|
Operadores
| Operador | Descripción | Ejemplo |
|---|---|---|
| eq | Igual. Busque una coincidencia exacta. | Se evalúa como true cuando el valor de properties.powerState es ON. matchExpression:
- and:
- key: properties.powerState
operator: eq
value: ON
|
| notEq | No igual. Evite una coincidencia exacta. | Se evalúa como true cuando el valor de properties.powerState no es OFF. matchExpression:
- and:
- key: properties.powerState
operator: notEq
value: OFF
|
| hasAny | Busque una coincidencia en una colección de objetos. | Se evalúa como true cuando la matriz storage.disks incluye un objeto EBS de 100 IOPS. matchExpression:
- key: storage.disks
operator: hasAny
value:
matchExpression:
- and:
- key: iops
operator: eq
value: 100
- key: service
operator: eq
value: ebs
|
| in | Busque una coincidencia en un conjunto de valores. | Se evalúa como true cuando el valor de properties.powerState es OFF o SUSPEND. matchExpression:
- and:
- key: properties.powerState
operator: in
value: OFF, SUSPEND
|
| notIn | Evite la coincidencia con un conjunto de valores. | Se evalúa como true cuando el valor de properties.powerState no es OFF ni SUSPEND. matchExpression:
- and:
- key: properties.powerState
operator: notIn
value: OFF, SUSPEND
|
| greaterThan | Busque una coincidencia superior a un umbral determinado. Solo se aplica a valores numéricos. | Se evalúa como true cuando el primer objeto de la matriz storage.disks tiene IOPS superiores a 50. matchExpression:
- and:
- key: storage.disks[0].iops
operator: greaterThan
value: 50
|
| lessThan | Busque una coincidencia inferior a un umbral determinado. Solo se aplica a valores numéricos. | Se evalúa como true cuando el primer objeto de la matriz storage.disks tiene IOPS inferiores a 200. matchExpression:
- and:
- key: storage.disks[0].iops
operator: lessThan
value: 200
|
| greaterThanEquals | Busque una coincidencia igual o superior a un umbral determinado. Solo se aplica a valores numéricos. | Se evalúa como true cuando el primer objeto de la matriz storage.disks tiene IOPS de 100 o más. matchExpression:
- and:
- key: storage.disks[0].iops
operator: greaterThanEquals
value: 100
|
| lessThanEquals | Busque una coincidencia igual o inferior a un umbral determinado. Solo se aplica a valores numéricos. | Se evalúa como true cuando el primer objeto de la matriz storage.disks tiene IOPS de 100 o menos. matchExpression:
- and:
- key: storage.disks[0].iops
operator: lessThanEquals
value: 100
|
| matchesRegex | Utilice una expresión regular para buscar una coincidencia. | Se evalúa como true cuando el valor de properties.zone es us-east-1a o us-east-1c. matchExpression:
- and:
- key: properties.zone
operator: matchesRegex
value: (us-east-1)+(a|c){1,2}
|
Ejemplos
La siguiente expresión de criterios se evalúa como true cuando properties.tags incluye una etiqueta de clave key1 y un valor value1.
La expresión externa utiliza hasAny debido a que properties.tags es una matriz y se desea evaluar como true cuando se muestra key1=value1 en cualquiera de los pares clave-valor de la matriz.
En la expresión interna, hay dos cláusulas: una para el campo de clave y otra para el campo de valor. La matriz properties.tags contiene pares de etiquetado clave-valor y debe coincidir con los campos de clave y valor.
matchExpression:
- key: properties.tags
operator: hasAny
value:
matchExpression:
- and:
- key: key
operator: eq
value: key1
- key: value
operator: eq
value: value1
La siguiente expresión de criterios es similar al ejemplo anterior, pero ahora se evalúa como true cuando properties.tags incluye una etiqueta key1=value1 o 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