Come faccio a risolvere i problemi relativi alla funzione Lambda?

8 minuti di lettura
0

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:

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:

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:

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:

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

AWS UFFICIALE
AWS UFFICIALEAggiornata un anno fa