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 Creazione di 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 filtraggio (). Pattern Un Pattern è una rappresentazione di stringa di una regola di filtro JSON. L'aspetto di un oggetto FilterCriteria è simile a quanto illustrato nell'esempio seguente:
{ "Filters": [ {"Pattern": "{ \"Metadata1\": [ pattern1 ], \"data\": { \"Data1\": [ pattern2 ] }}" } ] }
Per una maggiore chiarezza, ecco il valore del Pattern del filtro espanso in JSON semplice:
{ "Metadata1": [ pattern1 ], "data": {"Data1": [ pattern2 ]} }
Amazon Kinesis, Amazon MQ, Amazon MSK e Apache Kafka autogestito applicano la codifica Base64 al payload, ma non ai campi di metadati. Ad esempio, supponiamo che lo stream 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" }
Quando crei filtri per eventi, EventBridge Pipes può accedere al contenuto degli eventi. Questo contenuto può avere caratteri di escape JSON, come il campo body di Amazon SQS, o la codifica base64, come il campo data di Kinesis. Se i dati sono in formato JSON valido, i modelli di input o i percorsi JSON per i parametri di destinazione possono fare riferimento direttamente al contenuto, poiché EventBridge Pipes lo decodificherà automaticamente. Ad esempio, se un'origine di evento Kinesis è JSON valido, puoi fare riferimento a una variabile utilizzando <$.data.someKey>.
Continuando il nostro esempio, per filtrare i partitionKey metadati non codificati all'esterno dell'dataoggetto e la City proprietà codificata base64 all'interno dell'oggetto, dovresti utilizzare il data seguente filtro:
{ "partitionKey": [ "1" ], "data": { "City": [ "Seattle" ] } }
Quando si creano modelli di eventi, è possibile filtrare in base ai campi inviati dall'API di origine e non ai campi aggiunti dall'operazione di polling. I seguenti campi non possono essere utilizzati nei modelli di eventi:
awsRegioneventSourceeventSourceARNeventVersioneventIDeventNameinvokeIdentityArneventSourceKey
Le sezioni seguenti spiegano il comportamento di filtraggio per ogni tipo di origine di eventi supportato.
Filtraggio dei messaggi Amazon SQS
Se un messaggio Amazon SQS non soddisfa i tuoi criteri di filtro, rimuove EventBridge automaticamente il messaggio dalla coda. Non è necessario eliminare manualmente questi messaggi in Amazon SQS. È improbabile che il collegamento di più pipe a una coda SQS sia una configurazione utile: le pipe sarebbero in competizione per accaparrarsi i messaggi che, in caso di mancata corrispondenza, verrebbero eliminati.
Il corpo di un messaggio Amazon SQS può contenere qualsiasi stringa, non solo JSON. EventBridge Pipes si aspetta che il FilterCriteria formato corrisponda al formato dei messaggi in arrivo, che si tratti di un JSON valido o di una stringa semplice. Se c'è una mancata corrispondenza, EventBridge Pipes elimina il messaggio. Se FilterCriteria non lo includibody, ossia filtri solo in base ai metadati, EventBridge Pipes salta questo controllo. La tabella seguente riassume la valutazione:
| Formato modello di filtro | Formato in entrata | Risultato |
|---|---|---|
|
Stringa normale |
Stringa normale |
EventBridge filtri in base ai tuoi criteri di filtro. |
|
Stringa normale |
JSON valido |
EventBridge rilascia il messaggio. |
|
JSON valido |
Stringa normale |
EventBridge rilascia il messaggio. |
|
JSON valido |
JSON valido |
EventBridge filtra in base ai tuoi criteri di filtro. |
|
Nessun modello di filtro per |
Stringa normale |
EventBridge filtri in base ai tuoi criteri di filtro. |
|
Nessun modello di filtro per |
JSON valido |
EventBridge filtri in base ai tuoi criteri di filtro. |
Filtraggio dei messaggi Kinesis e DynamoDB
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 origini degli eventi di flusso, sia il campo dati che i criteri di filtro per il campo dati devono essere in formato JSON valido (per Kinesis, il campo dati è data, per Dynamo DB, il campo dati è dynamodb). Se uno dei due campi non è in un formato JSON valido, EventBridge elimina il messaggio o genera un'eccezione. La tabella seguente riepiloga il comportamento specifico:
| Formato modello di filtro | Formato in entrata | Risultato |
|---|---|---|
|
JSON valido |
JSON valido |
EventBridge filtri in base ai tuoi criteri di filtro. |
|
JSON valido |
Non-JSON |
EventBridge rilascia il messaggio. |
|
Nessun modello di filtro per |
JSON valido |
EventBridge filtri in base ai tuoi criteri di filtro. |
|
Nessun modello di filtro per |
Non-JSON |
EventBridge filtri in base ai tuoi criteri di filtro. |
|
Non-JSON |
Qualsiasi |
EventBridge genera un'eccezione al momento della creazione o dell'aggiornamento di Pipe. Il modello di filtro deve essere in formato JSON valido. |
Filtraggio di Amazon Managed Streaming per Apache Kafka, messaggi Apache Kafka autogestiti e Amazon MQ
Nota
Dopo aver associato i criteri di filtro a una pipe con un'origine di evento Kafka o Amazon MQ, per applicare le regole di filtro agli eventi possono essere necessari fino a 15 minuti.
Per le origini Amazon MQ, il campo del messaggio è data. Per le origini Apache Kafka (Amazon MSK e Apache Kafka autogestito), sono disponibili due campi di messaggio: key e 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 destinazione. Per Amazon MQ, EventBridge riconosce i messaggi corrispondenti dopo aver richiamato correttamente la funzione e riconosce i messaggi non corrispondenti quando li filtra.
I messaggi Kafka e Amazon MQ devono essere stringhe codificate UTF-8, stringhe 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, come UTF-16 o ASCII, o se il formato del messaggio non corrisponde al formato, elabora solo i filtri dei metadati. FilterCriteria EventBridge La tabella seguente riepiloga il comportamento specifico:
| Formato modello di filtro | Formato in entrata | Risultato |
|---|---|---|
|
Stringa normale |
Stringa normale |
EventBridge filtri in base ai tuoi criteri di filtro. |
|
Stringa normale |
JSON valido |
EventBridge filtra solo sui metadati, ignorando il |
|
JSON valido |
Stringa normale |
EventBridge filtra solo sui metadati, ignorando il |
|
JSON valido |
JSON valido |
EventBridge filtri in base ai tuoi criteri di filtro. |
|
Nessun modello di filtro per |
Stringa normale |
EventBridge filtra solo sui metadati, ignorando il |
|
Nessun modello di filtro per |
JSON valido |
EventBridge filtra solo sui metadati, ignorando il |
|
Qualsiasi |
Stringa non codificata UTF |
EventBridge filtra solo sui metadati, ignorando il |
Differenze tra Lambda ESM e Pipes EventBridge
Quando filtrano gli eventi, Lambda ESM EventBridge e Pipes funzionano generalmente allo stesso modo. La differenza principale è che il campo eventSourceKey non è presente nei payload ESM.
Utilizzo di operatori di confronto nei filtri a tubo
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.