Come faccio a risolvere la limitazione della funzione Lambda che restituisce gli errori "Rate exceeded" e 429 "TooManyRequestsException"?

5 minuti di lettura
0

La mia funzione AWS Lambda genera errori "Rate exceeded" e 429 "TooManyRequestsException".

Soluzione

Le funzioni Lambda sono talvolta limitate per proteggere le risorse e le applicazioni downstream. Anche seLambda si dimensiona automaticamente per adattarsi al traffico in entrata, la funzione può comunque essere limitata per vari motivi.

Per risolvere i problemi di limitazione di Lambda, inclusi gli errori Rate exceeded e TooManyRequestsException, esamina i passaggi seguenti.

Verificare quale risorsa è limitata

Gli errori di limitazione potrebbero non provenire dalla funzione Lambda. Le limitazioni possono verificarsi anche nelle chiamate API durante la chiamata della funzione.

Per confermare quale risorsa è limitata, controlla le seguenti risorse.

Controlla i tuoi file di log Amazon CloudWatch per verificare la presenza di errori di limitazione e l'assenza di punti dati corrispondenti nelle metriche sulle limitazioni di Lambda

Se non sono presenti metriche sullelimitazioni di Lambda, la limitazione si verifica sulle chiamate API nel codice della funzione Lambda.

Controlla il tuo codice funzione per eventuali chiamate API limitate

Se determinate chiamate API sono limitate, assicurati di utilizzare il backoff esponenziale nel codice per riprovare le chiamate API.

Nota: Se hai bisogno di una quota di transazioni al secondo (TPS) più elevata per una chiamata API, richiedi un aumento della quota di servizio. Non tutte le quote sono regolabili.

Controlla i parametri di concorrenza della tua funzione

Esamina le tue metriche Lambda in Amazon CloudWatch

Controlla la metrica ConcurrentExecutions relativa alla tua funzione nella regione AWS in cui vedi una limitazione.

Confronta la metrica ConcurrentExecutions con la metrica limitazioni per lo stesso timestamp

Visualizza la statistica Maximum per ConcurrentExecutions e la statistica Sum per limitazioni. Verifica se il numero massimo di ConcurrentExecutions è vicino alla quota di concorrenza a livello di account nella regione, insieme ai punti dati corrispondenti nel grafico limitazioni.

Verifica se stai superando la quota di concorrenza burst per una regione AWS specifica

Nella pagina delle metriche di Lambda nella console CloudWatch, riduci l'intervallo di tempo del grafico a 1 minuto. Se sei limitato dal dimensionamento burst, sul grafico vedrai un picco di limitazioni che corrisponde a uno schema a gradini di ConcurrentExecutions.

Nota: Per aggirare i limiti di concorrenza tra burst, puoi configurare la concorrenza fornita.

Controlla i picchi nelle metriche di durata relative alla tua funzione

La concorrenza dipende dalla durata della funzione. Se il completamento del codice della funzione richiede troppo tempo, è possibile che le risorse di elaborazione non siano sufficienti.

Prova ad aumentare l'impostazione della memoria della funzione. Quindi, utilizza AWS X-Ray e i log Amazon CloudWatch per isolare la causa degli aumenti di durata.

Nota: La modifica dell'impostazione della memoria può influire sui costi sostenuti per il tempo di esecuzione.

Puoi connettere la funzione a un Amazon Virtual Private Cloud (Amazon VPC). Se la funzione si trova in un Amazon VPC, consulta Come posso concedere l'accesso a Internet a una funzione Lambda connessa a un Amazon VPC?

Verifica l'aumento delle Metriche di errore per la tua funzione

Un aumento degli errori può portare a nuovi tentativi e causare un aumento complessivo delle chiamate. Un aumento delle chiamate può portare a un aumento della simultaneità. Usa i log CloudWatch per identificare ed eliminare gli errori e fare in modo che il codice della tua funzione gestisca le eccezioni.

Nota: La funzione può anche essere limitata in base alle richieste di chiamata per regione (richieste al secondo), pari a 10 volte la quota di esecuzioni simultanee.

Configurazione della concorrenza riservata

Conferma di averconfigurato la concorrenza riservata sulla tua funzione

Usa la console Lambda per verificare l'impostazione della concorrenza riservata. Se la concorrenza riservata non è configurata, la funzione utilizza la concorrenza non riservata. Quando le chiamate con funzioni superano la concorrenza non riservata, si verifica una limitazione.

Nota: Se hai configurato una funzione con zero concorrenza riservata, la funzione viene limitata perché non è in grado di elaborare alcun evento. Assicurati di aumentare il valore a un numero maggiore di zero.

Esamina la statistica massima in CloudWatch relativa alla tua funzione

Verifica se la metrica della funzione raggiunge il valore massimo per la metrica ConcurrentExecutions in qualsiasi momento.

Aumenta la concorrenza riservata per la tua funzione a un valore di concorrenza che impedisca alla funzione di subire limitazioni

Usa la console Lambda per modificare l'impostazione o chiama l'API PutFunctionConcurrency.

Usa il backoff esponenziale nella tua app

Per riprovare le richieste limitate, è consigliabile utilizzare il backoff esponenziale nell'applicazione che chiama la funzione Lambda.

Usa una coda DLQ

Per le fonti di eventi asincrone, come Amazon Simple Storage Service (Amazon S3) e Amazon EventBridge, configura la tua funzione con una coda DLQ. Quindi, verifica la gestione degli errori per la configurazione delle chiamate asincrone. Il DLQ rileva tutti gli eventi che vengono ignorati a causa delle continue limitazioni ed è in grado di proteggere i dati in caso di limitazioni significative.

Nota: Per le sorgenti di eventi Amazon Simple Queue Service (Amazon SQS), devi configurare il DLQ sulla coda Amazon SQS.

Richiedi un aumento della quota di servizio

Se il carico di lavoro richiede una quota di servizio più elevata per le esecuzioni simultanee, utilizza la console delle quote di servizio per richiedere un aumento della quota di servizio.


Informazioni correlate

Best practice per lavorare con le funzioni AWS Lambda

Risolvi i problemi di chiamata in AWS Lambda

Gestione degli errori e tentativi automatici in AWS Lambda

AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa