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 Event Bus Supporto per tubi

And

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

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

Tutto tranne Lo stato è qualsiasi valore oltre a «inizializzazione».

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

Qualsiasi cosa tranne (inizia con)

La regione non è negli Stati Uniti.

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

No

Tutto tranne (finisce con)

FileName non termina con un'estensione.png.

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

No

Tutto tranne (ignora maiuscole e minuscole)

Lo stato è qualsiasi valore oltre a «inizializzazione» o qualsiasi altra variazione di maiuscola, come "». INITIALIZING

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

No

Tutto tranne usare un jolly

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

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

No

Begins with

La regione è negli Stati Uniti.

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

Inizia con (ignora maiuscole e minuscole)

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

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

Empty

LastName è vuoto.

"LastName": [""]

Equals

Il nome è "Alice"

"Name": [ "Alice" ]

Equals (ignora maiuscole e minuscole)

Il nome è "Alice"

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

Ends with

FileName termina con un'estensione.png

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

Termina con (ignora maiuscole)

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

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

Exists

ProductName esiste

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

Does not exist

ProductName non esiste

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

Not

Il tempo è qualsiasi tranne "piovoso"

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

Null

UserID è nullo

"UserID": [ null ]

Numeric (uguale)

Il prezzo è 100

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

Numeric (intervallo)

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

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

Or

PaymentType è «Credito» o «Debito»

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

Or (campi multipli)

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

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

Carattere jolly

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

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

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

È inoltre possibile abbinare un valore di prefisso indipendentemente dalla maiuscola e minuscola dei caratteri con cui inizia un valore, utilizzando insieme a 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 scrittura 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 dei suffissi ignorando le maiuscole

È inoltre possibile abbinare un valore di suffisso indipendentemente dalla maiuscola e minuscola dei caratteri con cui termina un valore, utilizzando in combinazione con equals-ignore-case suffix.

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

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

Corrispondenza anything-but

Tutto tranne che la corrispondenza corrisponde a qualsiasi cosa ad eccezione di quanto 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 ] } ] } }

Tutto tranne la corrispondenza ignorando le maiuscole e le minuscole

Puoi anche usarlo insieme equals-ignore-case a, per abbinare i valori delle stringhe indipendentemente dal anything-but maiuscolo e minuscolo dei caratteri.

Il seguente modello di eventi corrisponde ai state campi che non contengono la stringa «initializing», "«, INITIALIZING «Initializing» o qualsiasi altra forma di maiuscolo di tali caratteri.

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

È possibile utilizzare anche equals-ignore-case in combinazione con anything-but per confrontare un elenco di valori:

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

Tutto tranne la corrispondenza sui prefissi

È possibile utilizzare insieme prefix a anything-but per abbinare valori di stringa che non iniziano con il valore specificato. Ciò include 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 utilizzata con un elenco di valori di prefisso. Questo modello di eventi corrisponde a qualsiasi evento che non ha né il prefisso né il campo"init". "stop" "state"

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

Tutto tranne la corrispondenza sui suffissi

È possibile utilizzare insieme suffix a anything-but per abbinare valori di stringa che non terminano con il valore specificato. Ciò include valori singoli o un elenco di valori.

Il seguente modello 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 la corrispondenza utilizzata con un elenco di valori di suffisso. Questo modello di eventi corrisponde a tutti i valori del FileName campo che non terminano con uno o. .txt .rtf

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

Tutto tranne la corrispondenza tramite caratteri jolly

È possibile utilizzare il carattere jolly (*) all'interno dei valori specificati per qualsiasi cosa tranne che per la corrispondenza. Ciò include valori singoli o un elenco di valori.

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

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

Il seguente schema di eventi mostra tutto tranne la corrispondenza utilizzata 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 funziona con valori che sono JSON numeri. È limitata a valori compresi tra -5.0e9 e +5.0e9 incluso, con 15 cifre di precisione (sei cifre a destra della virgola decimale).

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

Puoi utilizzare la corrispondenza degli indirizzi IP per IPv6 gli indirizzi IPv4 e. 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

Exists Matching funziona sulla presenza o l'assenza JSON di un campo nell'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 evento precedente NOT corrisponde al seguente evento perché non ha un detail.state campo.

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

Corrispondenza E quals-ignore-case

La quals-ignore-case corrispondenza E 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 barra rovesciata (\) 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 InvalidEventPatternException quando 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 del programma si ARN baseranno direttamente sulla regione in cui risiedono gli autobus dell'evento. 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

APIsche accettano un pattern di eventi (comePutRule, CreateArchiveUpdateArchive, eTestEventPattern) genereranno un InvalidEventPatternException if l'utilizzo di $or risultati in oltre 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.