Come posso filtrare gli eventi con EventBridge Pipes?
Desidero utilizzare Amazon EventBridge Pipes per acquisire un evento da origini AWS e collegarlo a destinazioni.
Breve descrizione
EventBridge Pipes riceve dati di eventi dalle seguenti origini:
- Flusso di Amazon DynamoDB
- Flusso di Amazon Kinesis
- Amazon MQ
- Flusso di Streaming gestito da Amazon per Apache Kafka (Amazon MSK)
- Flusso di Apache Kafka self-managed
- Coda di Amazon Simple Queue Service (Amazon SQS)
Se invii eventi di dati dall'origine alla destinazione, generi un sovraccarico delle risorse incorrendo in costi aggiuntivi. La destinazione deve elaborare tutti gli eventi di dati e implementare la logica aziendale per eliminare gli eventi non necessari. È consigliabile inviare alla destinazione solo eventi di dati specifici.
Per migliorare gli eventi filtrati prima di inviarli alla destinazione, utilizza una destinazione API o i seguenti servizi AWS:
- Gateway Amazon API
- AWS Lambda
- AWS Step Functions
Risoluzione
Nota: EventBridge Pipes utilizza modelli di eventi. Ogni origine di EventBridge Pipes ha campi che contengono il messaggio o i dati principali.
Utilizza i criteri di filtro per ridurre il sovraccarico
Per filtrare gli eventi inviati dall'origine, EventBridge Pipes utilizza i seguenti criteri di filtro:
- La proprietà dei Metadati include informazioni in formato JSON sull'origine che genera l'evento di dati.
- La proprietà dei Dati include il corpo del messaggio dell'evento di dati dall'origine. Il formato del corpo del messaggio varia a seconda dell'origine.
Esempio di corpo del messaggio inviato da una coda Amazon SQS:
{ "key": "example-key-1", "tag": "eb-pipe-filter", "object name": "sampleimage-11.png", "sequencer": "617f0837b476e463", "Order Status": "Approved" }
Esempio di evento che ricevuto dalla pipe:
{ "messageId": "c9652226-2d8f-49e9-9f06-beeb2a6f55ce", "receiptHandle": "AQEBoteuDChpmsb6765tA//hqtPta1W/utSYlmWuw3fjZnVvY+dxOUdj4cEjYZtLKGMGT4LUuvWbQPHb96Wwa+X0zUJo8ZiHC7dbul62hVbFTXjB7+cOKH91RXc3YMllpnd6nB3CNAOGIig6suCpEOGcrhTJ6dC45KoacROua1PIH454Ji8AP51TkQSnhkkeOJHInLHkvrd2sfoBo037kmMKJSo3kDgU7y92jbpJphRmijnNQX6gPQYSVifF3n3ApvSBMGQIUzQb65ZRLl6Mp2VPJQYF2RRjYShdrzhe3uON9H01m9f3LGcpL3yaX6yqFahfoEe3PiT6MMXHvIAaj+dKVSUqmnnk3n7X0n4WX1uFPgyjrI5KuJ64j2lf/dkcPMQEUPorjmagECmYpMrGlkBbZw==", "body": { "key": "example-key-1", "tag": "eb-pipe-filter", "object name": "sampleimage-11.png", "sequencer": "617f0837b476e463", "Order Status": "Approved" }, "attributes": { "ApproximateReceiveCount": "1", "SentTimestamp": "1690589578649", "SenderId": "AIDAIMWXWRRSWVPYSJEH6", "ApproximateFirstReceiveTimestamp": "1690589578654" }, "messageAttributes": { "Name": { "stringValue": "TestMessage", "stringListValues": [], "binaryListValues": [], "dataType": "String" } }, "md5OfMessageAttributes": "62bd1c2ea8c5344caa6852a77543892d", "md5OfBody": "388e8d9be1776f61c0be0a089807afbc", "eventSource": "aws:sqs", "eventSourceARN": "arn:aws:sqs:ap-southeast-2:123456789012:test-sqs-source-pipe", "awsRegion": "ap-southeast-2" }
Nota: nel precedente esempio di evento, non puoi utilizzare eventSource, eventSourceARN e awsRegion per creare un modello di eventi perché EventBridge aggiunge i dati durante il polling.
Esamina gli esempi di modelli di filtro degli eventi
Modello di filtro degli eventi corrispondente a proprietà dei metadati
Il seguente modello di filtro degli eventi corrisponde agli eventi ricevuti dalla pipe con le proprietà dei metadati attributes e StringValue:
{ "attributes": { "ApproximateReceiveCount": ["1"] }, "messageAttributes": { "Name": { "stringValue": ["TestMessage"] } } }
Modello di filtro degli eventi corrispondente a proprietà dei dati
Il seguente modello di filtro degli eventi corrisponde agli eventi ricevuti dalla pipe con la proprietà dei dati Order Status e il valore Approved:
{ "body": { "Order Status": ["Approved"] } }
Modello di filtro degli eventi corrispondente a proprietà dei metadati e dei dati
Il seguente modello di filtro degli eventi corrisponde agli eventi ricevuti dalla pipe con la proprietà dei dati Order Status e la proprietà dei metadati SenderId:
{ "attributes": { "SenderId": ["AIDAIMWXWRRSWVPYSJEH6"] }, "body": { "Order Status": ["Approved"] } }
Modello di filtro degli eventi senza corrispondenze
Il seguente modello di filtro degli eventi non può corrispondere agli eventi ricevuti dalla pipe perché contiene il campo awsRegion :
{ "body": { "Order Status": ["Approved"] }, "awsRegion": ["ap-southeast-2"] }
Nota: EventBridge aggiunge il campo awsRegion quando aggiunge i dati durante il polling. Sebbene i campi delle proprietà dei dati corrispondano, il modello di filtro degli eventi ha dato esito negativo.
Rivedi i criteri per una corrispondenza corretta
Se non configuri correttamente il corpo del messaggio in arrivo e il modello di filtro degli eventi, EventBridge Pipes elimina il messaggio.
Quando crei un modello di filtro degli eventi per il corpo del messaggio dell'evento, il modello deve corrispondere al formato utilizzato dalle origini. Ad esempio, il corpo del messaggio per SQS può essere una stringa semplice o uno script JSON. Il flusso di Kinesis e i record DynamoDB devono essere in un formato JSON valido. I flussi di Apache Kafka self-managed e i messaggi di Amazon MQ utilizzano stringhe codificate UTF-8, come stringhe semplici o in formato JSON.
Per ulteriori informazioni sulle origini e sui relativi modelli di filtro, consulta Filtraggio degli eventi in Amazon EventBridge Pipes.
Crea una regola EventBridge
Completa i seguenti passaggi:
- Apri la console EventBridge.
- Nel pannello di navigazione, scegli Pipe.
- Scegli Crea pipe, quindi inserisci un nome per la pipe.
- (Facoltativo) In Descrizione, aggiungi una descrizione della pipe.
- Nella scheda Costruisci pipe, seleziona il tipo di origine, quindi configurala.
- In Origine, inserisci i parametri, quindi scegli Successivo.
- In Tipo evento di esempio, seleziona Eventi AWS o Inserisci il mio.
- In Modello di eventi, inserisci il modello di eventi richiesto per filtrare gli eventi.
- (Facoltativo) Scegli Modello di test.
- (Facoltativo) Scegli Successivo per passare ad Arricchimento.
- Scegli Successivo per passare a Destinazione.
- In Dettagli, per Servizio di destinazione, seleziona la destinazione dall'elenco a discesa, quindi inserisci le informazioni sulla risorsa di destinazione.
- Configura le impostazioni della pipe.
- Scegli Crea pipe.
Informazioni correlate
- Argomenti
- Application IntegrationServerless
- Lingua
- Italiano

Contenuto pertinente
AWS UFFICIALEAggiornata un anno fa