View a markdown version of this page

Operatori di confronto da utilizzare nei modelli di eventi in Amazon EventBridge - Amazon EventBridge

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Operatori di confronto da utilizzare nei modelli di eventi in Amazon EventBridge

Di seguito un riepilogo di tutti gli operatori di confronto disponibili in EventBridge.

Gli operatori di confronto funzionano solo su nodi foglia, a eccezione di $or e anything-but.

Confronto Esempio Sintassi delle regole Supporto per Event Bus Supporto per tubi

And

La posizione è "New York" e il giorno è "lunedì"

"Location": [ "New York" ], "Day": ["Monday"]

Sì

Sì

Anything-but Lo stato è un valore qualsiasi oltre a «inizializzazione».

"state": [ { "anything-but": "initializing" } ]

Sì

Sì

Anything-but (inizia con)

La regione non è negli Stati Uniti.

"Region": [ { "anything-but": {"prefix": "us-" } } ]

Sì

No

Anything-but (termina con)

FileName non termina con l'estensione .png.

"FileName": [ { "anything-but": { "suffix": ".png" } } ]

Sì

No

Anything-but (ignora la maiuscola)

Lo stato è un valore diverso da «inizializzazione» o qualsiasi altra variazione maiuscola, ad esempio «INIZIALIZZAZIONE».

"state": : [{ "anything-but": { "equals-ignore-case": "initializing" }}]}

Sì

No

Anything-but utilizzando un carattere jolly

FileName non è un percorso di file che include/lib/.

"FilePath" : [{ "anything-but": { "wildcard": "*/lib/*" }}]

Sì

No

Begins with

La regione è negli Stati Uniti.

"Region": [ {"prefix": "us-" } ]

Sì

Sì

Inizia con (ignora maiuscole e minuscole)

Il nome del servizio inizia con le lettere «eventb», indipendentemente dalle maiuscole e minuscole.

{"service" : [{ "prefix": { "equals-ignore-case": "eventb" }}]}

Sì

Sì

Empty

LastName è vuoto.

"LastName": [""]

Sì

Sì

Equals

Il nome è "Alice"

"Name": [ "Alice" ]

Sì

Sì

Equals (ignora maiuscole e minuscole)

Il nome è "Alice"

"Name": [ { "equals-ignore-case": "alice" } ]

Sì

Sì

Ends with

FileName termina con un'estensione .png

"FileName": [ { "suffix": ".png" } ]

Sì

Sì

Termina con (ignora maiuscole)

Il nome del servizio termina con le lettere «tbridge» o con qualsiasi altra variante del maiuscolo, ad esempio «TBRIDGE».

{"service" : [{ "suffix": { "equals-ignore-case": "tBridge" }}]}

Sì

Sì

Exists

ProductName esiste

"ProductName": [ { "exists": true } ]

Sì

Sì

Does not exist

ProductName non esiste

"ProductName": [ { "exists": false } ]

Sì

Sì

Not

Il tempo è qualsiasi tranne "piovoso"

"Weather": [ { "anything-but": [ "Raining" ] } ]

Sì

Sì

Null

UserID è nullo

"UserID": [ null ]

Sì

Sì

Numeric (uguale)

Il prezzo è 100

"Price": [ { "numeric": [ "=", 100 ] } ]

Sì

Sì

Numeric (intervallo)

Il prezzo è superiore a 10 e inferiore o uguale a 20

"Price": [ { "numeric": [ ">", 10, "<=", 20 ] } ]

Sì

Sì

Or

PaymentType è «Credito» o «Debito»

"PaymentType": [ "Credit", "Debit"]

Sì

Sì

Or (campi multipli)

La posizione è "New York" o il giorno è "lunedì".

"$or": [ { "Location": [ "New York" ] }, { "Day": [ "Monday" ] } ]

Sì

Sì

Carattere jolly

Qualsiasi file con estensione .png, situato nella cartella "dir"

"FileName": [ { "wildcard": "dir/*.png" } ]

Sì

No

Corrispondenza in base al prefisso

Puoi trovare un evento corrispondente a seconda del prefisso di un valore nell'origine dell'evento. È possibile utilizzare la corrispondenza in base al prefisso per i valori delle stringhe.

Ad esempio, il seguente modello di eventi corrisponderebbe a qualsiasi evento in cui il campo "time" comincia con "2017-10-02", come in "time": "2017-10-02T18:43:48Z".

{ "time": [ { "prefix": "2017-10-02" } ] }

Corrispondenza dei prefissi ignorando le maiuscole e

È inoltre possibile abbinare un valore di prefisso indipendentemente dalla combinazione di maiuscole e minuscole con equals-ignore-case prefix.

Ad esempio, il seguente modello di evento corrisponderebbe a qualsiasi evento in cui il service campo inizia con la stringa di caratteriEventB, ma anche EVENTBeventb, o qualsiasi altra maiuscola di tali caratteri.

{ "detail": {"service" : [{ "prefix": { "equals-ignore-case": "EventB" }}]} }

Corrispondenza in base al suffisso

Puoi trovare un evento corrispondente a seconda del suffisso di un valore nell'origine dell'evento. È possibile utilizzare la corrispondenza in base al suffisso per i valori delle stringhe.

Ad esempio, il seguente modello di eventi corrisponderebbe a qualsiasi evento in cui il campo "FileName" termina con l'estensione di file .png.

{ "FileName": [ { "suffix": ".png" } ] }

Corrispondenza del suffisso ignorando le maiuscole e

È inoltre possibile abbinare un valore di suffisso indipendentemente dalla combinazione di maiuscole e minuscole con equals-ignore-case suffix.

Ad esempio, il seguente modello di evento corrisponderebbe a qualsiasi evento in cui il FileName campo termina con la stringa di caratteri.png, ma anche con .PNG qualsiasi altra maiuscola di tali caratteri.

{ "detail": {"FileName" : [{ "suffix": { "equals-ignore-case": ".png" }}]} }

Anything-but corrispondente

Anything-butla corrispondenza corrisponde a qualsiasi cosa tranne ciò che è specificato nella regola.

Puoi utilizzare la corrispondenza anything-but con stringhe e valori numerici, inclusi elenchi contenenti solo stringhe o solo numeri.

Il modello di eventi seguente mostra la corrispondenza anything-but con stringhe e numeri.

{ "detail": { "state": [ { "anything-but": "initializing" } ] } } { "detail": { "x-limit": [ { "anything-but": 123 } ] } }

Il modello di eventi seguente mostra la corrispondenza anything-but con un elenco di stringhe.

{ "detail": { "state": [ { "anything-but": [ "stopped", "overloaded" ] } ] } }

Il modello di eventi seguente mostra la corrispondenza anything-but con un elenco di numeri.

{ "detail": { "x-limit": [ { "anything-but": [ 100, 200, 300 ] } ] } }

Anything-but corrisponde ignorando le maiuscole e minuscole

Puoi anche usare insieme equals-ignore-case aanything-but, per far corrispondere i valori delle stringhe indipendentemente dalla combinazione di maiuscole e minuscole.

Il seguente schema di eventi corrisponde ai state campi che non contengono la stringa «initializing», «INITIALIZING», «Initializing» o qualsiasi altra combinazione di maiuscole di tali caratteri.

{ "detail": {"state" : [{ "anything-but": { "equals-ignore-case": "initializing" }}]} }

Puoi utilizzarlo anche insieme equals-ignore-case a anything-but per confrontare un elenco di valori:

{ "detail": {"state" : [{ "anything-but": { "equals-ignore-case": ["initializing", "stopped"] }}]} }

Anything-but corrispondenza sui prefissi

È possibile utilizzarlo insieme prefix a anything-but per abbinare valori di stringa che non iniziano con il valore specificato. Sono inclusi valori singoli o un elenco di valori.

Il seguente schema di eventi mostra tutto tranne le corrispondenze che corrispondono a qualsiasi evento che non ha il prefisso "init" nel campo. "state"

{ "detail": { "state": [ { "anything-but": { "prefix": "init" } } ] } }

Il seguente schema di eventi mostra tutto tranne la corrispondenza utilizzato con un elenco di valori di prefisso. Questo modello di evento corrisponde a qualsiasi evento che non ha né il prefisso né nel campo"init". "stop" "state"

{ "detail": { "state" : [{ "anything-but": { "prefix": ["init", "stop"] } } ] } } }

Anything-but corrispondenza sui suffissi

È possibile utilizzarlo insieme suffix a anything-but per abbinare valori di stringa che non terminano con il valore specificato. Sono inclusi valori singoli o un elenco di valori.

Il seguente schema di eventi corrisponde a tutti i valori del FileName campo che non terminano con.txt.

{ "detail": { "FileName": [ { "anything-but": { "suffix": ".txt" } } ] } }

Il seguente schema di eventi mostra tutto tranne le corrispondenze utilizzate con un elenco di valori di suffisso. Questo modello di evento corrisponde a tutti i valori del FileName campo che non terminano con o. .txt .rtf

{ "detail": { "FileName": [ { "anything-but": { "suffix": [".txt", ".rtf"] } } ] } }

Anything-but abbinamento con caratteri jolly

Puoi utilizzare il carattere jolly (*) all'interno dei valori specificati per qualsiasi cosa tranne che per la corrispondenza. Sono inclusi valori singoli o un elenco di valori.

Il seguente schema di eventi corrisponde a tutti i valori del FileName campo che non contengono/lib/.

{ "detail": { "FilePath" : [{ "anything-but": { "wildcard": "*/lib/*" }}] } }

Il seguente schema di eventi mostra tutto tranne le corrispondenze utilizzate con un elenco di valori che includono i caratteri jolly. Questo modello di evento corrisponde a tutti i valori del FileName campo che non contengono né l'uno né l'altro. /lib/ /bin/

{ "detail": { "FilePath" : [{ "anything-but": { "wildcard": ["*/lib/*", "*/bin/*"] }}] } }

Per ulteriori informazioni, consulta Corrispondenza tramite caratteri jolly.

Corrispondenza numerica

La corrispondenza numerica confronta i valori come numeri a virgola mobile a doppia precisione a 64 bit (IEEE 754 binary64), il che limita i numeri interi che possono essere abbinati esattamente. I numeri interi vengono abbinati esattamente da -9.007.199.254.740.992 a 9.007.199.254.740.992 (da -2 53 a +2 53). Se un valore non rientra in questo intervallo o non può essere rappresentato esattamente come un doppio, EventBridge rifiuta la regola al momento della creazione quando il valore viene utilizzato in un confronto numerico e un evento contenente tale valore non viene trattato come un numero e non corrisponderà a un confronto numerico.

Di seguito viene illustrata la corrispondenza numerica per un modello di eventi che corrisponde solo a eventi che sono veri per tutti i campi.

{ "detail": { "c-count": [ { "numeric": [ ">", 0, "<=", 5 ] } ], "d-count": [ { "numeric": [ "<", 10 ] } ], "x-limit": [ { "numeric": [ "=", 3.018e2 ] } ] } }

Corrispondenza in base all'indirizzo IP

È possibile utilizzare la corrispondenza in base all'indirizzo IP per indirizzi IPv4 e IPv6. Il seguente modello di eventi mostra la corrispondenza in base all'indirizzo IP con indirizzi IP che iniziano con 10.0.0 e terminano con un numero compreso tra 0 e 255.

{ "detail": { "sourceIPAddress": [ { "cidr": "10.0.0.0/24" } ] } }

Corrispondenza in base all'esistenza

La corrispondenza in base all'esistenza è relativa alla presenza o all'assenza di un campo nel JSON dell'evento.

La corrispondenza in base all'esistenza funziona solo sui nodi foglia. Non funziona sui nodi intermedi.

Il seguente modello di eventi corrisponde a qualsiasi evento che abbia un campo detail.state.

{ "detail": { "state": [ { "exists": true } ] } }

Il modello di eventi precedente corrisponde all'evento seguente.

{ "version": "0", "id": "7bf73129-1428-4cd3-a780-95db273d1602", "detail-type": "EC2 Instance State-change Notification", "source": "aws.ec2", "account": "123456789012", "time": "2015-11-11T21:29:54Z", "region": "us-east-1", "resources": ["arn:aws:ec2:us-east-1:123456789012:instance/i-abcd1111"], "detail": { "instance-id": "i-abcd1111", "state": "pending" } }

Il modello di eventi precedente NON corrisponde all'evento seguente perché non ha un campo detail.state.

{ "detail-type": [ "EC2 Instance State-change Notification" ], "resources": [ "arn:aws:ec2:us-east-1:123456789012:instance/i-02ebd4584a2ebd341" ], "detail": { "c-count" : { "c1" : 100 } } }

Equals-ignore-case abbinamento

Equals-ignore-casela corrispondenza funziona sui valori delle stringhe indipendentemente dalle maiuscole e minuscole.

Il modello di eventi seguente corrisponde a qualsiasi evento che ha un campo detail-type che corrisponde alla stringa specificata, indipendentemente dall'uso di maiuscole e minuscole.

{ "detail-type": [ { "equals-ignore-case": "ec2 instance state-change notification" } ] }

Il modello di eventi precedente corrisponde all'evento seguente.

{ "detail-type": [ "EC2 Instance State-change Notification" ], "resources": [ "arn:aws:ec2:us-east-1:123456789012:instance/i-02ebd4584a2ebd341" ], "detail": { "c-count" : { "c1" : 100 } } }

Corrispondenza tramite caratteri jolly

È possibile utilizzare il carattere jolly (*) per la corrispondenza con valori di stringa in modelli di eventi.

Nota

Attualmente il carattere jolly è supportato solo nelle regole di router di eventi.

Considerazioni sull'uso dei caratteri jolly nei modelli di eventi:

  • È possibile specificare un numero qualsiasi di caratteri jolly in un determinato valore di stringa; tuttavia, i caratteri jolly consecutivi non sono supportati.

  • EventBridge supporta l'uso del carattere backslash (\) per specificare i caratteri letterali * e\ nei filtri jolly:

    • La stringa \* rappresenta il carattere letterale *

    • La stringa \\ rappresenta il carattere letterale \

    L'utilizzo della barra rovesciata come carattere di escape per altri caratteri non è supportato.

Complessità dei caratteri jolly e dei modelli di eventi

Esiste un limite alla complessità di una regola che utilizza caratteri jolly. Se una regola è troppo complessa, EventBridge restituisce un valore InvalidEventPatternException quando si tenta di creare la regola. Se la tua regola genera un errore di questo tipo, valuta la possibilità di utilizzare le istruzioni riportate di seguito per ridurre la complessità del modello di eventi:

  • Riduci il numero di caratteri jolly utilizzati

    Utilizza caratteri jolly solo se è veramente necessario per la corrispondenza con molteplici valori possibili. Ad esempio, considera il seguente modello di eventi, in cui desideri trovare router di eventi corrispondenti nella stessa Regione:

    { "EventBusArn": [ { "wildcard": "*:*:*:*:*:event-bus/*" } ] }

    Nel caso precedente, molte delle sezioni dell'ARN si baseranno direttamente sulla Regione in cui risiedono i router di eventi. Quindi, se si utilizza la Regione us-east-1, un modello meno complesso che corrisponde comunque ai valori desiderati potrebbe essere come segue:

    { "EventBusArn": [ { "wildcard": "arn:aws:events:us-east-1:*:event-bus/*" } ] }
  • Riduci le sequenze di caratteri ripetute che si hanno dopo un carattere jolly

    La visualizzazione della stessa sequenza di caratteri più volte dopo l'uso di un carattere jolly aumenta la complessità dell'elaborazione del modello di eventi. Modifica il modello di eventi per ridurre al minimo le sequenze ripetute. Ad esempio, considera l'esempio seguente, che cerca la corrispondenza con il file doc.txt di qualsiasi utente:

    { "FileName": [ { "wildcard": "/Users/*/dir/dir/dir/dir/dir/doc.txt" } ] }

    Se si sapesse che il file doc.txt si troverebbe solo nel percorso specificato, si potrebbe ridurre la sequenza di caratteri ripetuta in questo modo:

    { "FileName": [ { "wildcard": "/Users/*/doc.txt" } ] }

Esempio complesso con corrispondenza multipla

Puoi combinare più criteri di corrispondenza in uno schema di eventi più complesso. Ad esempio, il seguente modello di eventi combina anything-but e numeric.

{ "time": [ { "prefix": "2017-10-02" } ], "detail": { "state": [ { "anything-but": "initializing" } ], "c-count": [ { "numeric": [ ">", 0, "<=", 5 ] } ], "d-count": [ { "numeric": [ "<", 10 ] } ], "x-limit": [ { "anything-but": [ 100, 200, 300 ] } ] } }
Nota

Quando si creano modelli di eventi, se si include una chiave più di una volta, l'ultimo riferimento sarà quello utilizzato per valutare gli eventi. Ad esempio, per il seguente modello:

{ "detail": { "location": [ { "prefix": "us-" } ], "location": [ { "anything-but": "us-east" } ] } }

solo { "anything-but": "us-east" } verrà preso in considerazione nella valutazione di location.

Esempio complesso con corrispondenza $or

Puoi anche creare modelli di eventi complessi che verificano se i valori del campo any corrispondono in più campi. Utilizza $or per creare modello di eventi che corrisponde se uno qualsiasi dei valori di più campi corrisponde.

Nota che puoi includere altri tipi di filtri, come la corrispondenza numerica e array, nel modello per singoli campi nel tuo costrutto $or.

Il modello di eventi seguente corrisponde se viene soddisfatta una delle seguenti condizioni:

  • Il campo c-count è maggiore di 0 o minore o uguale a 5.

  • Il campo d-count è inferiore a 10.

  • Il campo x-limit è uguale a 3.018e2.

{ "detail": { "$or": [ { "c-count": [ { "numeric": [ ">", 0, "<=", 5 ] } ] }, { "d-count": [ { "numeric": [ "<", 10 ] } ] }, { "x-limit": [ { "numeric": [ "=", 3.018e2 ] } ] } ] } }
Nota

Le API che accettano un modello di eventi (come PutRule, CreateArchive, UpdateArchive e TestEventPattern) genereranno un InvalidEventPatternException se l'utilizzo di $or risulta in più di 1000 combinazioni di regole.

Per determinare il numero di combinazioni di regole in un modello di eventi, moltiplica il numero totale di argomenti di ogni array $or del modello di eventi. Ad esempio, il modello precedente contiene un singolo array $or con tre argomenti, quindi anche il numero totale di combinazioni di regole è tre. Se hai aggiunto un altro array $or con due argomenti, le combinazioni di regole totali sarebbero quindi sei.