In che modo posso risolvere i problemi relativi a ReportBatchItemFailures della funzione Lambda SQS?

3 minuti di lettura
0

Ho configurato la Partial Batch Response (risposta del batch parziale) per la funzione AWS Lambda con Amazon Simple Queue Service (Amazon SQS) configurato come un'origine evento. Ora, la funzione Lambda restituisce un elenco di "ReportBatchItemFailures" e si verifica uno dei seguenti eventi: Lambda prova nuovamente un intero batch di messaggi quando non si è verificato un errore della funzione o Lambda non riprova nessuno dei batch parziali di messaggi. In che modo posso risolvere il problema?

Risoluzione

Nota: è necessario configurare manualmente la Partial Batch Response (risposta del batch parziale) sulla funzione Lambda per elaborare a livello di programmazione i batch parziali di Amazon SQS. Per ulteriori informazioni, consulta la sezione Segnalazioni errori articoli batch nella Guida per gli sviluppatori di AWS Lambda.

Esempio del comando AWS Command Line Interface (AWS CLI) per attivare la Partial Batch Response (risposta del batch parziale) per una funzione Lambda

Importante: sostituisci <esm_UUID> con l'identificatore univoco universale (UUID) della mappatura dell'origine evento di Amazon SQS. Per recuperare l'UUID della mappatura dell'origine evento, esegui il comando AWS CLI list-event-source-mappings. se ricevi un messaggio di errore durante l’esecuzione dei comandi AWS CLI, assicurati di usare la versione più recente di AWS CLI.

aws lambda update-event-source-mapping --uuid <esm_UUID> --function-response-types "ReportBatchItemFailures"

Per risolvere i problemi relativi a ReportBatchItemFailures in cui Lambda prova nuovamente un intero batch di messaggi SQS quando non si è verificato un errore della funzione

Esamina la Partial Batch Response (risposta del batch parziale) nel codice della funzione Lambda per vedere se sono presenti alcune delle seguenti risposte. Quindi, risolvi il problema in base alla risposta registrata.

Nota: Lambda considera un batch completamente non riuscito se la funzione restituisce una delle seguenti risposte.

Risposte per un EventResponse che non è un JSON valido

return "Hello world"
return ""

Risposta per un valore itemIdentifier vuoto

return {"batchItemFailures":[{"itemIdentifier": ""}]}

Risposta per un valore itemIdentifier nullo

return {"batchItemFailures":[{"itemIdentifier": None}]}

Risposta per un valore itemIdentifier con un nome chiave errato

return {"batchItemFailures":[{"bad_key": messageID}]}

Risposta per un valore itemIdentifier con un ID messaggio che non esiste

return {"batchItemFailures":[{"itemIdentifier": "random_ID"}]}

Importante: la funzione Lambda deve restituire un valore JSONitemIdentifier valido.

Per risolvere i problemi relativi a ReportBatchItemFailures in cui Lambda non riprova nessuno dei batch parziali di messaggi

Esamina la Partial Batch Response (risposta del batch parziale) nel codice della funzione Lambda per vedere se sono presenti alcune delle seguenti risposte. Quindi, risolvi il problema in base alla risposta registrata.

Nota: Lambda considera un batch completamente riuscito quando la funzione restituisce una delle seguenti risposte.

Risposta per un elenco batchItemFailures vuoto

return {"batchItemFailures":[]}

Risposta per un elenco batchItemFailures nullo

return {"batchItemFailures": None}

Risposte per un EventResponse con un valore JSON vuoto o imprevisto

return {}
return {"Key1":"Value1"}

Risposte per un EventResponse nullo

return
return None

Importante: la funzione Lambda deve restituire una risposta contenente un valore JSON "batchItemFailures" che include un elenco di ID messaggi validi.


Informazioni correlate

Come posso impedire che un messaggio Amazon SQS richiami la mia funzione Lambda più di una volta?

AWS UFFICIALE
AWS UFFICIALEAggiornata 2 anni fa