Come faccio a risolvere i problemi relativi alla funzione Lambda?
Quando provo a richiamare la mia funzione AWS Lambda, questa dà esito negativo e restituisce un errore.
Risoluzione
Per risolvere i problemi delle funzioni Lambda, determina la causa dell'errore utilizzando uno o più servizi e funzionalità AWS elencati in questo articolo. Quindi, segui i link forniti per esaminare le best practice per la risoluzione di ogni singolo problema.
Identifica e risolvi eventuali errori di rete
In caso di problemi con la configurazione di rete Lambda, potrai vedere molti tipi di errori. Di seguito sono riportati alcuni degli errori di rete più comuni associati a Lambda:
Se la funzione non si trova in un cloud privato virtuale (VPC) e hai provato ad accedere alle risorse utilizzando un nome DNS privato, vedrai il seguente errore:
UnknownHostException
Error: getaddrinfo ENOTFOUND
Se la tua funzione si trova in un VPC e poi perde l'accesso a Internet o non riesce a connettersi, visualizzerai il seguente errore:
connect ETIMEDOUT 176.32.98.189:443
Task timed out after 10.00 seconds
Se il VPC in cui si trova la funzione ha raggiunto il limite dell'interfaccia di rete elastica, visualizzerai il seguente errore:
ENILimitReachedException: The elastic network interface limit was reached for the function's VPC.
Se viene interrotta la connessione TCP (Transmission Control Protocol), comparirà il seguente errore:
Connection reset by peer
ECONNRESET
ECONNREFUSED
Per risolvere gli errori di rete legati a Lambda
1. Verifica che esista un percorso di rete valido verso l'endpoint che la tua funzione sta tentando di raggiungere per il tuo Amazon Virtual Private Cloud (Amazon VPC). Per ulteriori informazioni, consulta la pagina Configuring a Lambda Function to Access Resources in a VPC.
2. Verifica che la tua funzione abbia accesso a Internet. Per ulteriori informazioni, consulta la pagina Come faccio a dare accesso a Internet a una funzione Lambda collegata a un VPC Amazon? Consulta anche la pagina Come posso risolvere i problemi di timeout di una funzione Lambda presente in un Amazon VPC?
3. Per risolvere i problemi relativi alla risoluzione DNS, assicurati che il VPC sia configurato per l'accesso alle risorse private. Se non utilizzi il DNS fornito da AWS, utilizza un'istanza EC2 per assicurarti che l'opzione DHCP personalizzata che è stata fornita risolva correttamente il nome DNS. Per ulteriori informazioni, consulta la pagina How does DNS work and how do I troubleshoot partial or intermittent DNS failures?
Nota: se, dopo aver esaminato la configurazione del VPC, non riesci a determinare il motivo per cui il codice della funzione non raggiunge un endpoint pubblico, attiva i Log di flusso VPC. I Log di flusso VPC consentono di visualizzare tutto il traffico di rete da e verso un VPC. I Log di flusso VPC consentono inoltre di determinare il motivo per cui una richiesta specifica è stata rifiutata o non è stata indirizzata. Per ulteriori informazioni, consulta la pagina Risoluzione dei problemi di rete in Lambda.
Identifica e risolvi eventuali errori correlati alle autorizzazioni
Se le autorizzazioni di sicurezza per il pacchetto di implementazione di Lambda non sono corrette, verrà visualizzato uno dei seguenti errori:
- EACCES: permission denied, open '/var/task/index.js'
- cannot load such file -- function
- [Errno 13] Permission denied: '/var/task/function.py'
Il runtime di Lambda necessita dell'autorizzazione per leggere i file nel pacchetto di implementazione. È possibile utilizzare il comando chmod per modificare la modalità del file. I seguenti comandi di esempio rendono tutti i file e le cartelle nella directory corrente leggibili da parte di qualsiasi utente:
chmod -R o+rX .
Per ulteriori informazioni, consulta la pagina Risoluzione dei problemi relativi alle implementazioni in Lambda.
Se le tue identità AWS Identity and Access Management (IAM) non dispongono dell'autorizzazione per richiamare una funzione, verrà visualizzato il seguente errore:
User: arn:aws:iam::123456789012:user/developer is not authorized to perform: lambda:InvokeFunction on resource: my-function
Per risolvere gli errori relativi alle autorizzazioni Lambda
Controlla le voci del file di log di Lambda in AWS CloudTrail. Il richiedente che effettua chiamate a Lambda deve disporre delle autorizzazioni IAM necessarie per il richiamo della funzione. Per concedere le autorizzazioni richieste, aggiorna le autorizzazioni della funzione Lambda.
Per ulteriori informazioni, consulta i seguenti argomenti:
- Understanding AWS Lambda log file entries
- Risoluzione dei problemi di identità e accesso in AWS Lambda
- IAM: lambda:InvokeFunction non autorizzato.
Identifica e risolvi eventuali errori di codice
Se ci sono problemi con il codice Lambda, verranno visualizzati diversi tipi di errori. Di seguito sono riportati alcuni degli errori più comuni relativi al codice Lambda:
- Unable to marshal response: Object of type AttributeError is not JSON serializable
- Issue: The AWS SDK included on the runtime is not the latest version
- (Node.js) Function returns before code finishes executing
- KeyError
Per risolvere gli errori relativi al codice Lambda
1. Controlla Amazon CloudWatch Logs per Lambda.
Puoi utilizzare CloudWatch per visualizzare tutti i log generati dal codice della funzione e identificare potenziali problemi. Per ulteriori informazioni, consulta la pagina Utilizzo dei CloudWatch log di Amazon con AWS Lambda. Per maggiori dettagli sulla registrazione delle funzioni, consulta le seguenti istruzioni in base al linguaggio di programmazione utilizzato:
- Registrazione dei log della funzione AWS Lambda in Python
- Registrazione dei log della funzione AWS Lambda in Node.js
- Registrazione dei log della funzione AWS Lambda in Java
- Registrazione dei log della funzione AWS Lambda in Go
- Registrazione dei log della funzione AWS Lambda in C#
- Registrazione dei log della funzione AWS Lambda in PowerShell
- Registrazione dei log della funzione AWS Lambda in Ruby
Nota: se la funzione restituisce una traccia dello stack, il messaggio di errore nella traccia dello stack indicherà la causa dell'errore.
2. Usa AWS X-Ray per identificare eventuali colli di bottiglia nelle prestazioni del codice. Se la tua funzione Lambda utilizza microservizi, database, risorse AWS o API web HTTP a valle, puoi utilizzare AWS X-Ray per risolvere i problemi di prestazioni del codice. Per ulteriori informazioni, consulta la pagina Uso di AWS Lambda con AWS X-Ray.
3. Verifica che il pacchetto di implementazione della funzione possa importare tutte le dipendenze richieste. Segui le ](https://docs.aws.amazon.com/lambda/latest/dg/gettingstarted-package.html)istruzioni per i pacchetti di implementazione Lambda[ in base al linguaggio di programmazione utilizzato:
- Istruzioni per il pacchetto di implementazione Lambda in Python
- Istruzioni per il pacchetto di implementazione Lambda in Node.js
- Istruzioni per il pacchetto di implementazione Lambda in Java
- Istruzioni per il pacchetto di implementazione Lambda in Go
- Istruzioni per il pacchetto di implementazione Lambda in C#
- Istruzioni per il pacchetto di implementazione Lambda in PowerShell
- Istruzioni per il pacchetto di implementazione Lambda in Ruby
Nota: puoi anche utilizzare i livelli Lambda per aggiungere dipendenze esterne al pacchetto di implementazione.
4. (In caso di codice implementato come immagine di container) Verifica di aver installato il client dell'interfaccia di runtime e di aver implementato correttamente l'immagine. Segui le istruzioni per l'immagine del container in base al linguaggio di programmazione utilizzato:
- Istruzioni per l'immagine del container Lambda in Python
- Istruzioni per l'immagine del container Lambda in Node.js
- Istruzioni per l'immagine del container Lambda in Java
- Istruzioni per l'immagine del container Lambda in Go
- Istruzioni per l'immagine del container Lambda in C#
- Istruzioni per l'immagine del container Lambda in Ruby
Identifica e risolvi eventuali errori di limitazione (della larghezza di banda della rete)
Se la funzione viene limitata, visualizzerai il seguente errore:
Rate exceeded
429 TooManyRequestsException
Per risolvere gli errori di limitazione di Lambda
Rivedi i parametri di CloudWatch per Lambda. Per ulteriori informazioni, consulta la pagina Utilizzo dei parametri delle funzioni Lambda.
Parametri chiave da monitorare:
- ConcurrentExecutions
- UnreservedConcurrentExecutions
- Throttles
Nota: se le richieste di richiamo della funzione arrivano con una velocità superiore alla capacità della funzione di gestirne il dimensionamento o superano il limite di simultaneità, le richieste avranno esito negativo e verrà generato un errore di limitazione 429. Per ulteriori informazioni, consulta la pagina ](https://docs.aws.amazon.com/lambda/latest/dg/lambda-concurrency.html)Dimensionamento della funzione Lambda[. Inoltre, consulta la pagina Come faccio a risolvere la limitazione della funzione Lambda che restituisce gli errori "Rate exceeded" e 429 "TooManyRequestsException"?
Identifica e risolvi eventuali errori di richiamo di API 500 e 502
Se la richiesta di richiamo ha esito negativo, verrà visualizzato uno dei seguenti errori 502 o 500 sul lato server:
- InvalidRuntimeException
- InvalidSecurityGroupIDException
- InvalidZipFileException
- KMSAccessDeniedException
- KMSNotFoundException
- You have exceeded the maximum limit for Hyperplane ENIs for your account
- SubnetIPAddressLimitReachedException
Per risolvere gli errori Lambda di richiamo API 500 e 502
Segui le istruzioni riportate nella pagina Come posso risolvere gli errori dei codici di stato HTTP 502 e HTTP 500 (lato server) di AWS Lambda? Per un elenco dei possibili errori e delle relative descrizioni, consulta la sezione Errori nella pagina di riferimento delle API Invoke.
Identifica e risolvi eventuali errori di immagine del container
Se stai usando immagini del container e riscontri un problema con una di esse, riceverai uno dei seguenti errori:
- "errorType": "Runtime.InvalidEntrypoint"
- Error: You are using an AWS CloudFormation template, and your container ENTRYPOINT is being overridden with a null or empty value.
Per risolvere i problemi relativi alle immagini del container di Lambda
Segui le istruzioni riportate nella pagina Risoluzione dei problemi relativi all'immagine del container in Lambda.
Informazioni correlate
Monitoraggio e risoluzione dei problemi delle funzioni Lambda
Gestione degli errori e nuovi tentativi automatici in AWS Lambda
Contenuto pertinente
- AWS UFFICIALEAggiornata 2 anni fa
- AWS UFFICIALEAggiornata 2 anni fa
- In che modo posso risolvere i problemi relativi a ReportBatchItemFailures della funzione Lambda SQS?AWS UFFICIALEAggiornata 3 anni fa
- AWS UFFICIALEAggiornata 2 anni fa