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 da Amazon MSK e fonti di eventi Apache Kafka autogestite
Puoi utilizzare il filtro degli eventi per controllare quali record di uno stream o di una coda Lambda invia alla tua Event Function. Per informazioni generali sul funzionamento del filtraggio eventi, consulta Controlla quali eventi Lambda invia alla tua Event Function.
Nota
Amazon MSK e le mappature delle sorgenti degli eventi autogestite di Apache Kafka supportano solo il filtraggio sulla chiave. value
Nozioni di base sul filtraggio degli eventi di Kafka
Supponiamo che un produttore stia scrivendo messaggi su un argomento nel tuo cluster Kafka, in formato JSON valido o come stringhe semplici. Un record di esempio sarebbe simile al seguente, con il messaggio convertito in una stringa codificata Base64 nel campo value.
{ "mytopic-0":[ { "topic":"mytopic", "partition":0, "offset":15, "timestamp":1545084650987, "timestampType":"CREATE_TIME", "value":"SGVsbG8sIHRoaXMgaXMgYSB0ZXN0Lg==", "headers":[] } ] }
Supponiamo che il produttore Apache Kafka stia scrivendo messaggi sul tuo argomento nel seguente formato JSON.
{ "device_ID": "AB1234", "session":{ "start_time": "yyyy-mm-ddThh:mm:ss", "duration": 162 } }
Puoi utilizzare la chiave value per filtrare i record. Supponiamo di voler filtrare solo i record in cui device_ID inizia con le lettere AB. L'oggetto FilterCriteria dovrebbe avere la struttura seguente.
{ "Filters": [ { "Pattern": "{ \"value\" : { \"device_ID\" : [ { \"prefix\": \"AB\" } ] } }" } ] }
Per una maggiore chiarezza, ecco il valore del Pattern del filtro espanso in JSON semplice.
{ "value": { "device_ID": [ { "prefix": "AB" } ] } }
Puoi aggiungere il filtro utilizzando la console o un modello. AWS CLI AWS SAM
Con Kafka, puoi anche filtrare i record in cui il messaggio è una stringa semplice. Supponiamo di voler ignorare i messaggi la cui stringa è "errore". L'oggetto FilterCriteria dovrebbe avere la struttura seguente.
{ "Filters": [ { "Pattern": "{ \"value\" : [ { \"anything-but\": [ \"error\" ] } ] }" } ] }
Per una maggiore chiarezza, ecco il valore del Pattern del filtro espanso in JSON semplice.
{ "value": [ { "anything-but": [ "error" ] } ] }
Puoi aggiungere il filtro utilizzando la console AWS CLI o un AWS SAM modello.
I messaggi Kafka devono essere stringhe UTF-8 codificate, semplici o in formato JSON. Questo perché Lambda decodifica gli array di byte Kafka prima di applicare i criteri di filtro. UTF-8 Se i tuoi messaggi utilizzano un'altra codifica, ad esempio ASCII, UTF-16 o se il formato del messaggio non corrisponde al formato, Lambda elabora solo i FilterCriteria filtri dei metadati. La tabella seguente riepiloga il comportamento specifico:
| Formato messaggio in arrivo | Formato del modello di filtro per le proprietà di messaggi | Operazione risultante |
|---|---|---|
|
Stringa normale |
Stringa normale |
Filtri Lambda in base ai criteri di filtro. |
|
Stringa normale |
Nessun modello di filtro per le proprietà dei dati |
Filtri Lambda (solo sulle altre proprietà dei metadati) in base ai criteri di filtro. |
|
Stringa normale |
JSON valido |
Filtri Lambda (solo sulle altre proprietà dei metadati) in base ai criteri di filtro. |
|
JSON valido |
Stringa normale |
Filtri Lambda (solo sulle altre proprietà dei metadati) in base ai criteri di filtro. |
|
JSON valido |
Nessun modello di filtro per le proprietà dei dati |
Filtri Lambda (solo sulle altre proprietà dei metadati) in base ai criteri di filtro. |
|
JSON valido |
JSON valido |
Filtri Lambda in base ai criteri di filtro. |
|
Non-UTF-8 stringa codificata |
JSON, stringa semplice o nessun modello |
Filtri Lambda (solo sulle altre proprietà dei metadati) in base ai criteri di filtro. |