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.

Editor avanzado de criterios de acciones personalizadas

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