In alternativa all'elenco di condizioni semplici in Automation Assembler, l'editor avanzato consente di assemblare espressioni di criteri più complesse per controllare quando l'azione è disponibile.

Quando si crea una nuova azione risorsa, selezionare Richiede condizione e Usa editor avanzato. Immettere quindi l'espressione dei criteri desiderata.

Editor avanzato dei criteri di azioni personalizzate

L'espressione è una clausola o un elenco di clausole, ognuna delle quali è nel formato key-operator-value. Nella figura precedente sono illustrati i criteri in cui la destinazione deve essere accesa e presente.

Clausole

Clausola Descrizione Esempio
e Affinché il risultato dell'espressione sia true, tutte le clausole secondarie devono essere true.

Viene valutato come true solo quando properties.powerState è ON e syncStatus non è MISSING.

matchExpression:
  - and:
      - key: properties.powerState
        operator: eq
        value: ON
      - key: syncStatus
        operator: notEq
        value: MISSING
o Affinché il risultato dell'espressione sia true, una o più clausole secondarie devono essere true.

Viene valutato come true se properties.powerState è ON oppure OFF.

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

Operatori

Operatore Descrizione Esempio
eq Uguale. Cerca una corrispondenza esatta.

Viene valutato come true quando properties.powerState è ON.

matchExpression:
  - and:
      - key: properties.powerState
        operator: eq
        value: ON
notEq Non uguale. Evita una corrispondenza esatta.

Viene valutato come true quando properties.powerState non è OFF.

matchExpression:
  - and:
      - key: properties.powerState
        operator: notEq
        value: OFF
hasAny Cerca una corrispondenza in una raccolta di oggetti.

Viene valutato come true quando l'array storage.disks include un oggetto EBS di 100 IOPS.

matchExpression:
  - key: storage.disks
    operator: hasAny
    value:
      matchExpression: 
        - and:
            - key: iops
              operator: eq
              value: 100
            - key: service
              operator: eq
              value: ebs
in Cerca una corrispondenza in un set di valori.

Viene valutato come true quando properties.powerState è OFF o SUSPEND.

matchExpression:
  - and:
      - key: properties.powerState
        operator: in
        value: OFF, SUSPEND
notIn Evita una corrispondenze di un set di valori.

Viene valutato come true quando properties.powerState non è né OFF né SUSPEND.

matchExpression:
  - and:
      - key: properties.powerState
        operator: notIn
        value: OFF, SUSPEND
greaterThan Cerca una corrispondenza oltre una determinata soglia. Si applica solo a valori numerici.

Viene valutato come true quando il primo oggetto nell'array storage.disks presenta un valore di IOPS superiore a 50.

matchExpression:
  - and:
      - key: storage.disks[0].iops
        operator: greaterThan
        value: 50
lessThan Cerca una corrispondenza inferiore a una determinata soglia. Si applica solo a valori numerici.

Viene valutato come true quando il primo oggetto nell'array storage.disks presenta un valore di IOPS inferiore a 200.

matchExpression:
  - and:
      - key: storage.disks[0].iops
        operator: lessThan
        value: 200
greaterThanEquals Cerca una corrispondenza pari o superiore a una determinata soglia. Si applica solo a valori numerici.

Viene valutato come true quando il primo oggetto nell'array storage.disks presenta un valore di IOPS pari o superiore a 100.

matchExpression:
  - and:
      - key: storage.disks[0].iops
        operator: greaterThanEquals
        value: 100
lessThanEquals Cerca una corrispondenza pari o inferiore a una determinata soglia. Si applica solo a valori numerici.

Viene valutato come true quando il primo oggetto nell'array storage.disks presenta un valore di IOPS pari o inferiore a 100.

matchExpression:
  - and:
      - key: storage.disks[0].iops
        operator: lessThanEquals
        value: 100
matchesRegex Utilizza un'espressione regolare per cercare una corrispondenza.

Viene valutato come true quando properties.zone è us-east-1a o us-east-1c.

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

Esempi

La seguente espressione di criteri viene valutata come true quando properties.tags include un tag con key key1 e value value1.

L'espressione esterna utilizza hasAny perché properties.tags è un array e si desidera che venga valutato come true ogni volta che key1=value1 viene visualizzato in qualsiasi coppia key-value nell'array.

Nell'espressione interna sono presenti due clausole, una per il campo key e una per il campo value. L'array properties.tags contiene coppie di tag key-value ed è necessario che corrisponda sia al campo key che al campo value.

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

La seguente espressione dei criteri è simile all'esempio precedente, ma ora viene valutata come true ogni volta che properties.tags include un tag 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