In che modo posso risolvere i problemi relativi a ReportBatchItemFailures della funzione Lambda SQS?
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?
Contenuto pertinente
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 2 anni fa
- Perché la mia funzione Lambda con un'origine eventi Amazon SQS non si ridimensiona in modo ottimale?AWS UFFICIALEAggiornata 3 mesi fa
- AWS UFFICIALEAggiornata un anno fa