Filtraggio degli eventi in Amazon EventBridge Pipes - 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à.

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.