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à.
Best practice per l'implementazione di risposte batch parziali
Questa sezione fornisce le best practice per la configurazione di risposte batch parziali per le sorgenti di eventi Amazon SQS.
-
Configura una coda DLQ per evitare di creare un anti-modello snowball nell'architettura dell'applicazione serverless. Per ulteriori informazioni, consulta la sezione Evitare gli anti-modelli snowball.
-
Configura la mappatura dell'origine degli eventi della funzione Lambda per rendere visibili solo i messaggi non riusciti. Per fare ciò, aggiungili ReportBatchItemFailuresall'FunctionResponseTypeselenco quando configuri la mappatura delle sorgenti degli eventi. La funzione Lambda, quando viene richiamata da SQS, dovrebbe implementare risposte batch parziali. Prendi in considerazione l'utilizzo dell'utilità Powertools for AWS Lambda Batch Processing, che elabora i messaggi SQS con il supporto integrato per batch parziali.
Elaborazione in batch
-
Implementa risposte batch parziali nella funzione Lambda richiamata da SQS. Prendi in considerazione l'utilizzo dell'utilità Powertools for AWS Lambda Batch Processing. Questa utilità gestisce l'elaborazione dei messaggi SQS con il supporto integrato per la risposta parziale in batch. Per ulteriori informazioni, consulta Segnalazione degli errori degli elementi in batch per le funzioni Lambda con un trigger Amazon SQS nella Developer Guide.AWS Lambda
Utilità Powertools per l'elaborazione AWS Lambda in batch
Idempotenza
-
Stabilisci il numero di volte in cui un messaggio viene consegnato a una coda di origine prima di essere spostato nella coda DLQ. Assicuratevi che il valore definito sia adatto al caso d'uso dell'applicazione identificando le cause più probabili di errore e i relativi tempi di ripristino stimati. Per definire il numero di tentativi, configura il maxReceiveCountvalore sulla coda di origine. RedrivePolicy Per ulteriori informazioni, SetQueueAttributesconsulta Amazon SQS API Reference. Inoltre, consulta Presentazione del reindirizzamento della coda di lettera morta di Amazon Simple Queue Service
alle code di origine. -
Assicurati che il tuo codice Lambda sia idempotente e possa gestire i messaggi più volte. Per implementare l'idempotenza, prendi in considerazione l'utilizzo dell'utilità Powertools for AWS Lambda Idempotency, che prepara il codice di una funzione per supportare singoli lavori all'interno di un batch Amazon SQS. Inizia incorporando la mappatura dei sorgenti degli eventi. ReportBatchItemFailures Per ulteriori informazioni, consulta Implementazione di risposte batch parziali nella AWS Lambda Developer Guide e Come posso impedire a un messaggio Amazon SQS di richiamare la mia funzione Lambda
più di una volta?
Utilità Powertools for Idempotency AWS Lambda
Parametri
Utilità Powertools for Metrics AWS Lambda
-
Se si utilizza una coda First-In-First-Out (FIFO), la funzione dovrebbe interrompere l'elaborazione dei messaggi dopo il primo errore e restituire tutti i messaggi non riusciti e non elaborati. batchItemFailures Questo aiuta a preservare l'ordine dei messaggi nella coda.
Nota
Per tenere traccia delle prestazioni complessive di un'applicazione che utilizza l'elaborazione in batch parziale, è necessario il monitoraggio delle prestazioni a livello di codice. Dopo la configurazione dell'elaborazione in batch, le chiamate alla funzione Lambda di solito hanno esito positivo indipendentemente dal risultato dell'elaborazione.
Evitare gli anti-modelli snowball
Lambda e Amazon SQS non possono controllare i messaggi che i microservizi upstream scrivono in una coda SQS. Se ci sono messaggi che non possono essere elaborati, Lambda li restituisce alla coda SQS di origine, a meno che non sia configurata una coda di lettere non scritte separata. I messaggi non elaborati vengono quindi ritentati dalla funzione Lambda. Se non esiste una coda di lettere non scritte, il numero di messaggi non elaborati restituiti alla coda di Amazon SQS alla fine supera il numero di messaggi validi della coda.
Questo tipo di anti-pattern a palla di neve, in cui ogni chiamata Lambda successiva peggiora il problema, può causare i seguenti problemi:
-
Esperienza utente scadente perché l'elaborazione dei lavori richiede più tempo del solito o non vengono elaborati affatto
-
Aumento dei costi proporzionale all'aumento esponenziale del numero di messaggi nella coda Amazon SQS e ai nuovi tentativi di elaborazione dei messaggi
-
Capacità di calcolo Lambda ridotta per l'applicazione o Account AWS se la funzione non ha limiti alle sue richieste di chiamata
Per evitare di creare un anti-pattern a valanga durante la configurazione di risposte parziali in batch, è consigliabile creare anche una coda di lettere non scritte. Questa coda separata può archiviare i messaggi che non vengono elaborati correttamente e aiutarti a gestire meglio il ciclo di vita dei messaggi non elaborati dell'applicazione.
Per ulteriori informazioni, consulta Configurare una coda di lettere non scritte utilizzando la console Amazon SQS nella Amazon SQS Developer Guide.