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à.
Filtraggio degli eventi in Amazon EventBridge Pipes
Con EventBridge Pipes, puoi filtrare gli eventi di una determinata fonte ed elaborarne solo un sottoinsieme. Questo filtraggio funziona allo stesso modo del filtraggio su un bus di EventBridge eventi o sulla mappatura della sorgente di eventi Lambda, utilizzando modelli di eventi. Per ulteriori informazioni sui modelli di eventi, consulta Modelli di EventBridge eventi Amazon.
Un oggetto FilterCriteria
criterio di filtro è una struttura costituita da un elenco di filtri (Filters
). Ogni filtro è una struttura che definisce un modello di filtro (Pattern
). A Pattern
è una rappresentazione in formato stringa di una regola di filtro. JSON L'aspetto di un oggetto FilterCriteria
è simile a quanto illustrato nell'esempio seguente:
{ "Filters": [ {"Pattern": "{ \"Metadata1\": [ rule1 ], \"data\": { \"Data1\": [ rule2 ] }}" } ] }
Per maggiore chiarezza, ecco il valore del filtro Pattern
espanso in chiaroJSON:
{ "Metadata1": [ pattern1 ], "data": {"Data1": [ pattern2 ]} }
Le parti principali di un oggetto FilterCriteria
sono le proprietà di metadati e le proprietà di dati.
Le proprietà di metadati sono i campi dell'oggetto evento. Nell'esempio,
FilterCriteria.Metadata1
si riferisce a una proprietà di metadati.Le proprietà di dati sono i campi dell'oggetto evento. Nell'esempio,
FilterCriteria.Data1
si riferisce a una proprietà di dati.
Ad esempio, supponiamo che il tuo flusso Kinesis contenga un evento come questo:
{ "kinesisSchemaVersion": "1.0", "partitionKey": "1", "sequenceNumber": "49590338271490256608559692538361571095921575989136588898", "data": {"City": "Seattle", "State": "WA", "Temperature": "46", "Month": "December" }, "approximateArrivalTimestamp": 1545084650.987 }
Quando l'evento attraversa la tua pipe, avrà il seguente aspetto con il campo data
con codifica base64:
{ "kinesisSchemaVersion": "1.0", "partitionKey": "1", "sequenceNumber": "49590338271490256608559692538361571095921575989136588898", "data": "SGVsbG8sIHRoaXMgaXMgYSB0ZXN0Lg==", "approximateArrivalTimestamp": 1545084650.987, "eventSource": "aws:kinesis", "eventVersion": "1.0", "eventID": "shardId-000000000006:49590338271490256608559692538361571095921575989136588898", "eventName": "aws:kinesis:record", "invokeIdentityArn": "arn:aws:iam::123456789012:role/lambda-role", "awsRegion": "us-east-2", "eventSourceARN": "arn:aws:kinesis:us-east-2:123456789012:stream/lambda-stream" }
Le proprietà di metadati nell'evento Kinesis sono qualsiasi campo esterno all'oggettodata
, ad esempio partitionKey
o sequenceNumber
.
Le proprietà di metadati dell'evento Kinesis sono i campi nell'oggetto data
, ad esempio City
o Temperature
.
Quando applichi i filtri per trovare una corrispondenza con questo evento, puoi farlo sui campi decodificati. Ad esempio, per filtrare in base a partitionKey
e City
devi utilizzare il seguente filtro:
{ "partitionKey": [ "1" ], "data": { "City": [ "Seattle" ] } }
Quando crei filtri per eventi, EventBridge Pipes può accedere al contenuto degli eventi. Questo contenuto è in formato JSON -escape, come il SQS body
campo Amazon, o con codifica base64, come il campo Kinesis. data
Se i dati sono validiJSON, i modelli di input o i JSON percorsi per i parametri di destinazione possono fare riferimento direttamente al contenuto. Ad esempio, se un'origine di eventi Kinesis è validaJSON, puoi fare riferimento a una variabile utilizzando. <$.data.someKey>
Quando si creano modelli di eventi, è possibile filtrare in base ai campi inviati dalla fonte API e non ai campi aggiunti dall'operazione di polling. I seguenti campi non possono essere utilizzati nei modelli di eventi:
awsRegion
eventSource
eventSourceARN
eventVersion
eventID
eventName
invokeIdentityArn
eventSourceKey
Campi dati e messaggio
Ogni sorgente EventBridge Pipe contiene un campo che contiene il messaggio o i dati principali. Questi campi sono denominati campi messaggio o campi dati. Questi campi sono speciali perché possono essere JSON codificati in -escape o in base64, ma quando sono validi JSON possono essere filtrati con JSON schemi come se il corpo non fosse sfuggito. Il contenuto di questi campi può essere utilizzato senza problemi in trasformatori di input.
Filtraggio corretto dei messaggi Amazon SQS
Se un SQS messaggio Amazon non soddisfa i tuoi criteri di filtro, rimuove EventBridge automaticamente il messaggio dalla coda. Non è necessario eliminare questi messaggi manualmente in AmazonSQS.
Per AmazonSQS, il messaggio body
può essere qualsiasi stringa. Tuttavia, questo può essere problematico se FilterCriteria
si prevede che sia body
in un formato validoJSON. Vale anche lo scenario inverso: se il messaggio in arrivo body
è in un JSON formato valido, ma i criteri di filtro body
prevedono che sia una semplice stringa, si verifica un comportamento non intenzionale.
Per evitare questo problema, assicurati che il formato di body
in FilterCriteria
corrisponda al formato previsto di body
nei messaggi ricevuti dalla coda. Prima di filtrare i messaggi, valuta EventBridge automaticamente il formato del messaggio body
in arrivo e il modello di filtro per. body
Se c'è una mancata corrispondenza, EventBridge elimina il messaggio. La tabella seguente riepiloga questa valutazione:
Formato body messaggio in arrivo |
Formato body modello di filtro |
Operazione risultante |
---|---|---|
Stringa normale |
Stringa normale |
EventBridge filtra in base ai tuoi criteri di filtro. |
Stringa normale |
Nessun modello di filtro per le proprietà dei dati |
EventBridge filtri (solo sulle altre proprietà dei metadati) in base ai tuoi criteri di filtro. |
Stringa normale |
Valido JSON |
EventBridge rilascia il messaggio. |
Valido JSON |
Stringa normale |
EventBridge rilascia il messaggio. |
Valido JSON |
Nessun modello di filtro per le proprietà dei dati |
EventBridge filtri (solo sulle altre proprietà dei metadati) in base ai criteri di filtro. |
Valido JSON |
Valido JSON |
EventBridge filtri in base ai tuoi criteri di filtro. |
Se non lo includi body
come parte del tuoFilterCriteria
, EventBridge salta questo controllo.
Filtraggio corretto dei messaggi Kinesis e Dynamo DB
Dopo che i criteri di filtro elaborano un record Kinesis o DynamoDB, l'iteratore di flussi ignora tale record. Se il registro non soddisfa i criteri di filtro, non è necessario eliminare manualmente il record dall'origine dell'evento. Dopo il periodo di conservazione, Kinesis e DynamoDB eliminano automaticamente questi vecchi record. Se vuoi che i record vengano eliminati prima, consulta Modifica del periodo di conservazione dei dati.
Per filtrare correttamente gli eventi dalle sorgenti di eventi di streaming, sia il campo dati che i criteri di filtro per il campo dati devono essere in formato valido. JSON (per Kinesis, il campo dati è data
, per Dynamo DB, il campo dati è dynamodb
). Se uno dei due campi non è in un JSON formato valido, EventBridge elimina il messaggio o genera un'eccezione. La tabella seguente riepiloga il comportamento specifico:
Formato dei dati in entrata (data o dynamodb ) |
Formato del modello di filtro per le proprietà di dati | Operazione risultante |
---|---|---|
Valido JSON |
Valido JSON |
EventBridge filtri in base ai tuoi criteri di filtro. |
Valido JSON |
Nessun modello di filtro per le proprietà dei dati |
EventBridge filtri (solo sulle altre proprietà dei metadati) in base ai criteri di filtro. |
Valido JSON |
Non- JSON |
EventBridge genera un'eccezione al momento della pipe o dell'aggiornamento. Il modello di filtro per le proprietà dei dati deve essere in un JSON formato valido. |
Non- JSON |
Valido JSON |
EventBridge cancella il record. |
non- JSON |
Nessun modello di filtro per le proprietà dei dati |
EventBridge filtri (solo sulle altre proprietà dei metadati) in base ai criteri di filtro. |
Non- JSON |
Non- JSON |
EventBridge genera un'eccezione al momento della creazione o dell'aggiornamento della pipe. Il modello di filtro per le proprietà dei dati deve essere in un JSON formato valido. |
Filtro corretto dei messaggi di Streaming gestito da Amazon per Apache Kafka, Apache Kafka autogestito e Amazon MQ
Per le origini Amazon MQ, il campo del messaggio è data
. Per i sorgenti Apache Kafka (Amazon MSK e Apache Kafka autogestito), ci sono due campi di messaggio: e. key
value
EventBridge elimina i messaggi che non corrispondono a tutti i campi inclusi nel filtro. Per Apache Kafka, esegue il EventBridge commit degli offset per i messaggi corrispondenti e non corrispondenti dopo aver richiamato correttamente la funzione. Per Amazon MQ, EventBridge riconosce i messaggi corrispondenti dopo aver richiamato con successo la funzione e riconosce i messaggi non corrispondenti quando li filtra.
I messaggi di Apache Kafka e Amazon MQ devono essere costituiti da UTF -8 stringhe codificate, semplici o in formato. JSON Questo perché EventBridge decodifica gli array di byte Apache Kafka e Amazon MQ in UTF -8 prima di applicare i criteri di filtro. Se i tuoi messaggi utilizzano un'altra codifica, ad esempio UTF -16 o, o se il formato del messaggio non corrisponde al formatoASCII, elabora solo i filtri dei FilterCriteria
metadati. EventBridge La tabella seguente riepiloga il comportamento specifico:
Formato del messaggio in arrivo (data o key e value ) |
Formato del modello di filtro per le proprietà di messaggi | Operazione risultante |
---|---|---|
Stringa normale |
Stringa normale |
EventBridge filtra in base ai tuoi criteri di filtro. |
Stringa normale |
Nessun modello di filtro per le proprietà dei dati |
EventBridge filtri (solo sulle altre proprietà dei metadati) in base ai tuoi criteri di filtro. |
Stringa normale |
Valido JSON |
EventBridge filtri (solo sulle altre proprietà dei metadati) in base ai criteri di filtro. |
Valido JSON |
Stringa normale |
EventBridge filtri (solo sulle altre proprietà dei metadati) in base ai criteri di filtro. |
Valido JSON |
Nessun modello di filtro per le proprietà dei dati |
EventBridge filtri (solo sulle altre proprietà dei metadati) in base ai criteri di filtro. |
Valido JSON |
Valido JSON |
EventBridge filtri in base ai tuoi criteri di filtro. |
Stringa codificata non UTF -8 |
JSON, stringa semplice o nessun modello |
EventBridge filtri (solo sulle altre proprietà dei metadati) in base ai criteri di filtro. |
Differenze tra Lambda ESM e Pipes EventBridge
Quando si filtrano gli eventi, ESM Lambda EventBridge e Pipes funzionano generalmente allo stesso modo. La differenza principale è che il eventSourceKey
campo non è presente nei ESM payload.
Utilizzo di operatori di confronto nei filtri per tubi
Gli operatori di confronto consentono di creare modelli di eventi che corrispondono ai valori dei campi negli eventi.
Per un elenco completo degli operatori di confronto supportati per l'uso nei filtri a tubo, vedereOperatori di confronto.