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à.
Utilizzo del filtraggio degli eventi con una fonte di SQS eventi Amazon
Puoi utilizzare il filtraggio degli eventi per controllare quali record di un flusso o di una coda Lambda invia alla funzione. Per informazioni generali su come funziona il filtraggio degli eventi, consulta. Controlla quali eventi Lambda invia alla tua funzione
Questa sezione si concentra sul filtraggio degli eventi per le fonti di MSK eventi Amazon.
Nozioni di base sul filtraggio SQS degli eventi di Amazon
Supponiamo che la tua SQS coda Amazon contenga messaggi nel seguente JSON formato.
{ "RecordNumber": 1234, "TimeStamp": "yyyy-mm-ddThh:mm:ss", "RequestCode": "AAAA" }
Un record di esempio per questa coda sarebbe il seguente.
{ "messageId": "059f36b4-87a3-44ab-83d2-661975830a7d", "receiptHandle": "AQEBwJnKyrHigUMZj6rYigCgxlaS3SLy0a...", "body": "{\n "RecordNumber": 1234,\n "TimeStamp": "yyyy-mm-ddThh:mm:ss",\n "RequestCode": "AAAA"\n}", "attributes": { "ApproximateReceiveCount": "1", "SentTimestamp": "1545082649183", "SenderId": "AIDAIENQZJOLO23YVJ4VO", "ApproximateFirstReceiveTimestamp": "1545082649185" }, "messageAttributes": {}, "md5OfBody": "e4e68fb7bd0e697a0ae8f1bb342846b3", "eventSource": "aws:sqs", "eventSourceARN": "arn:aws:sqs:us-west-2:123456789012:my-queue", "awsRegion": "us-west-2" }
Per filtrare in base al contenuto dei tuoi SQS messaggi Amazon, usa la body
chiave nel record dei SQS messaggi Amazon. Supponi di voler elaborare solo i record RequestCode
in cui il tuo SQS messaggio Amazon è «BBBB.» L'oggetto FilterCriteria
dovrebbe avere la struttura seguente.
{ "Filters": [ { "Pattern": "{ \"body\" : { \"RequestCode\" : [ \"BBBB\" ] } }" } ] }
Per maggiore chiarezza, ecco il valore del filtro Pattern
espanso in chiaroJSON.
{ "body": { "RequestCode": [ "BBBB" ] } }
Puoi aggiungere il filtro utilizzando la console AWS CLI o un AWS SAM modello.
Supponiamo che tu voglia che la tua funzione elabori solo i record in cui RecordNumber
è maggiore di 9999. L'oggetto FilterCriteria
dovrebbe avere la struttura seguente.
{ "Filters": [ { "Pattern": "{ \"body\" : { \"RecordNumber\" : [ { \"numeric\": [ \">\", 9999 ] } ] } }" } ] }
Per maggiore chiarezza, ecco il valore del filtro Pattern
espanso in chiaro. JSON
{ "body": { "RecordNumber": [ { "numeric": [ ">", 9999 ] } ] } }
Puoi aggiungere il filtro utilizzando la console AWS CLI o un AWS SAM modello.
Per AmazonSQS, il corpo del messaggio può essere qualsiasi stringa. Tuttavia, questo può essere problematico se FilterCriteria
body
prevedi che sia in un JSON formato valido. Vale anche lo scenario inverso: se il corpo del messaggio in arrivo è in JSON formato ma i criteri di filtro prevedono che sia una semplice stringa, ciò può body
portare a un comportamento non intenzionale.
Per evitare questo problema, assicurati che il formato del corpo nei FilterCriteria
corrisponda al formato previsto per il body
nei messaggi ricevuti dalla coda. Prima di filtrare i messaggi, Lambda valuta automaticamente il formato del corpo del messaggio in arrivo e il modello di filtraggio per body
. In caso di mancata corrispondenza, Lambda rilascia il messaggio. La tabella seguente riepiloga questa valutazione:
Formato body messaggio in arrivo |
Formato body modello di filtro |
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 |
Valido JSON |
Lambda rilascia il messaggio. |
Valido JSON |
Stringa normale |
Lambda rilascia il messaggio. |
Valido JSON |
Nessun modello di filtro per le proprietà dei dati |
Filtri Lambda (solo sulle altre proprietà dei metadati) in base ai criteri di filtro. |
Valido JSON |
Valido JSON |
Filtri Lambda in base ai criteri di filtro. |