Risoluzione dei problemi di invocazione in Lambda
Quando si richiama una funzione Lambda, Lambda convalida la richiesta e verifica la capacità di ridimensionamento prima di inviare l'evento alla funzione o, per la invocazione asincrona, alla coda eventi. Gli errori di invocazione possono essere causati da problemi relativi ai parametri di richiesta, alla struttura degli eventi, alle impostazioni delle funzioni, alle autorizzazioni utente, alle autorizzazioni delle risorse o alle restrizioni.
Se invochi direttamente la funzione, visualizzi eventuali errori di invocazione nella risposta da Lambda. Se si richiama la funzione in modo asincrono, con un mapping di origine eventi o tramite un altro servizio, è possibile che vengano riscontrati errori nei log, nella coda DLQ o in una destinazione in caso di errore. Le opzioni di gestione degli errori e il comportamento dei tentativi variano a seconda di come si richiama la funzione e del tipo di errore.
Per un elenco di tipi di errore che l'operazione Invoke può restituire, consulta Invoke (Invoca).
Argomenti
Lambda: timeout della funzione durante la fase di inizializzazione (Sandbox.Timedout)
Lambda: impossibile trovare un bootstrap valido (Runtime.InvalidEntrypoint)
Lambda: l'operazione non può essere eseguita ResourceConflictException
Generale: impossibile richiamare la funzione con altri account o servizi
EFS: la funzione non è in grado di montare il file system EFS
EFS: la funzione non è in grado di connettersi al file system EFS
EFS: la funzione non è in grado di montare il file system EFS a causa del timeout
Lambda: Lambda ha rilevato un processo IO che stava impiegando troppo tempo
Lambda: timeout della funzione durante la fase di inizializzazione (Sandbox.Timedout)
Errore: Timeout dell'attività dopo 3 secondi
Quando la fase Init scade, Lambda inizializza nuovamente l'ambiente di esecuzione rieseguendo la fase Init all'arrivo della successiva richiesta di invocazione. Questa operazione è chiamata inizializzazione soppressa. Tuttavia, se la funzione è configurata con una durata di timeout breve (in genere circa 3 secondi), l'init soppresso potrebbe non essere completato durante il periodo di timeout assegnato, causando un nuovo timeout della fase Init. In alternativa, l'init soppresso viene completato ma non lascia abbastanza tempo per il completamento della fase Invoke, causando il timeout della fase Invoke.
Per ridurre gli errori di timeout, utilizza una delle seguenti strategie:
-
Aumenta la durata del timeout della funzione: estendi il timeout per dare più tempo per il completamento delle fasi
IniteInvoke. -
Aumenta l'allocazione della memoria della funzione: una maggiore quantità di memoria significa anche una maggiore allocazione proporzionale della CPU, che può velocizzare entrambe le fasi
IniteInvoke. -
Ottimizza il codice di inizializzazione della funzione: riduci il tempo necessario per l'inizializzazione per garantire che le fasi
IniteInvokepossano essere completate entro il timeout configurato.
IAM: lambda:InvokeFunction non autorizzata
Error: User: arn:aws:iam::123456789012:user/developer is not authorized to perform: lambda:InvokeFunction on resource: my-function (Errore: l'utente arn:aws:iam::123456789012:user/developer non è autorizzato a eseguire lambda:InvokeFunction sulla risorsa my-function)
L'utente, o il ruolo che assumi, deve disporre dell'autorizzazione per invocare una funzione. Questo requisito si applica anche alle funzioni Lambda e ad altre risorse di calcolo che richiamano funzioni. Aggiungi la policy gestita da AWS AWSLambdaRole all'utente o aggiungi una policy personalizzata che consente l'operazione lambda:InvokeFunction sulla funzione di destinazione.
Nota
Il nome dell'azione IAM (lambda:InvokeFunction) si riferisce all'operazione dell'API di Lambda Invoke.
Per ulteriori informazioni, consulta Gestione delle autorizzazioni in AWS Lambda .
Lambda: impossibile trovare un bootstrap valido (Runtime.InvalidEntrypoint)
Errore: impossibile trovare bootstrap validi: [/var/task/bootstrap/opt/bootstrap]
Questo errore si verifica in genere quando la root del pacchetto di implementazione non contiene un file eseguibile denominato bootstrap. Ad esempio, se desideri implementare una funzione provided.al2023 con un file .zip, il file bootstrap deve trovarsi nella root del file .zip, non in una directory.
Lambda: l'operazione non può essere eseguita ResourceConflictException
Errore: ResourceConflictException: l'operazione non può essere eseguita in questo momento. La funzione è attualmente nello stato seguente: Pending (In sospeso
Quando si connette una funzione a un VPC al momento della creazione, la funzione entra in uno stato Pending mentre Lambda crea le interfacce di rete elastica. Durante questo periodo, non è possibile richiamare o modificare la funzione. Se si connette la funzione a un VPC dopo la creazione, è possibile richiamarla mentre l'aggiornamento è in sospeso, ma non è possibile modificarne il codice o la configurazione.
Per ulteriori informazioni, consulta Stati funzione Lambda .
Lambda: la funzione è bloccata in sospeso
Errore: una funzione è bloccata nello stato Pending per diversi minuti.
Se una funzione è bloccata nello stato Pending per più di sei minuti, invoca una delle seguenti operazioni API per sbloccarla.
Lambda annulla l'operazione in sospeso e imposta la funzione allo stato Failed. Puoi tentare, quindi, un altro aggiornamento.
Lambda: una funzione sta usando tutta la simultaneità
Problema: una funzione utilizza tutta la simultaneità disponibile, causando la limitazione di altre funzioni.
Per dividere in pool la simultaneità disponibile del tuo account AWS in una regione AWS, utilizzare la simultaneità riservata. La simultaneità riservata garantisce che una funzione possa sempre scalare alla relativa simultaneità assegnata e che non scalerà oltre la simultaneità assegnata.
Generale: impossibile richiamare la funzione con altri account o servizi
Problema: è possibile invocare la funzione direttamente, ma questa non viene eseguita quando un altro servizio o account la invoca.
Puoi concedere ad altri servizi e account l'autorizzazione a invocare una funzione nella policy basata sulle risorse della funzione. Se l'invoker si trova in un altro account, tale utente deve anche disporre dell'autorizzazione per invocare le funzioni.
Generale: il richiamo della funzione è in loop
Problema: la funzione viene richiamata continuamente in un loop.
Ciò si verifica in genere quando la funzione gestisce le risorse nello stesso servizio AWS che la attiva. Ad esempio, è possibile creare una funzione che memorizza un oggetto in un bucket Amazon Simple Storage Service (Amazon S3) configurato con una notifica che richiama nuovamente la funzione. Per interrompere l'esecuzione della funzione, riduci la simultaneità a zero, il che limita tutte le invocazioni future. Quindi identificare il percorso del codice o l'errore di configurazione che ha causato la chiamata ricorsiva. Lambda rileva e interrompe automaticamente i loop ricorsivi per alcuni servizi e SDK AWS. Per ulteriori informazioni, consulta Usa il rilevamento di un ciclo ricorsivo Lambda per prevenire loop infiniti.
Lambda: routing alias con simultaneità fornita
Problema: invocazioni spillover di concorrenza con provisioning durante il routing degli alias.
Lambda utilizza un modello probabilistico semplice per distribuire il traffico tra le due versioni delle funzioni. A livelli di traffico bassi, è possibile che si verifichi una variazione elevata tra la percentuale di traffico configurata e quella effettiva in ciascuna versione. Se la tua funzione utilizza la concorrenza con provisioning, puoi evitare invocazioni spillover configurando un numero maggiore di istanze di concorrenza sottoposte a provisioning durante il periodo in cui il routing degli alias è attivo.
Lambda: avvii a freddo con simultaneità fornita
Problema: si verificano avvii a freddo dopo che è stata abilitata la simultaneità fornita.
Quando il numero di esecuzioni simultanee su una funzione è minore o uguale al livello configurato di simultaneità fornita, non dovrebbero verificarsi avvii a freddo. Per confermare se la simultaneità fornita funziona normalmente, effettuare le seguenti operazioni:
-
Verificare che la simultaneità fornita sia abilitata sulla versione o sull'alias della funzione.
Nota
La simultaneità fornita non è configurabile nella versione non pubblicata della funzione ($LATEST).
-
Assicurarsi che i trigger richiamino la versione o l'alias della funzione corretti. Ad esempio, se si utilizza Amazon API Gateway, verificare che API Gateway richiami la versione o l'alias della funzione con la simultaneità fornita, non $LATEST. Per verificare che venga utilizzata la simultaneità fornita, è possibile controllare il parametro Amazon CloudWatch ProvisionedConcurrencyInvocations. Un valore diverso da zero indica che la funzione sta elaborando le chiamate in ambienti di esecuzione inizializzati.
-
Determinare se la simultaneità delle funzioni supera il livello configurato di simultaneità fornita verificando il parametro ProvisionedConcurrencySpilloverInvocations CloudWatch. Un valore diverso da zero indica che tutta la simultaneità fornita è in uso e che si è verificata una chiamata con un avvio a freddo.
-
Verifica la frequenza di chiamata (richieste al secondo). Le funzioni con simultaneità fornita hanno un tasso massimo di 10 richieste al secondo per ogni simultaneità fornita. Ad esempio, una funzione configurata con 100 simultaneità fornita può gestire 1.000 richieste al secondo. Se la frequenza di chiamata supera le 1.000 richieste al secondo, è possibile che si verifichino alcuni avvii a freddo.
Lambda: avvii a freddo con nuove versioni
Problema: si verificano avvii a freddo durante la distribuzione di nuove versioni della funzione.
Quando si aggiorna un alias di funzione, Lambda sposta automaticamente la simultaneità fornita alla nuova versione in base ai pesi configurati sull'alias.
Errore: KMSDisabledException: Lambda non ha potuto decrittografare le variabili di ambiente perché la chiave KMS utilizzata è disabilitata. Controlla le impostazioni delle chiavi KMS della funzione.
Questo errore può verificarsi se la chiave AWS Key Management Service (AWS KMS) è disabilitata o se l'autorizzazione che consente a Lambda di utilizzare la chiave viene revocata. Se l'autorizzazione manca, configurare la funzione per utilizzare una chiave diversa. Quindi, riassegnare la chiave personalizzata per ricreare l'autorizzazione.
EFS: la funzione non è in grado di montare il file system EFS
Errore: EFSMountFailureException: The function could not mount the EFS file system with access point arn:aws:elasticfilesystem:us-east-2:123456789012:access-point/fsap-015cxmplb72b405fd. (EFSMountFailureException: La funzione non ha potuto montare il file system EFS con il punto di accesso arn:aws:elasticfilesystem:us-east-2:123456789012:access-point/fsap-015cxmplb72b405fd)
La richiesta di montaggio al file system della funzione è stata rifiutata. Verificare le autorizzazioni della funzione e verificare che il file system e il punto di accesso esistano e siano pronti per l'uso.
EFS: la funzione non è in grado di connettersi al file system EFS
Errore: EFSMountConnectivityException: The function couldn't connect to the Amazon EFS file system with access point arn:aws:elasticfilesystem:us-east-2:123456789012:access-point/fsap-015cxmplb72b405fd.(EFSMountConnectivityException: La funzione non è riuscita a collegarsi al file system Amazon EFS con il punto di accesso arn:aws:elasticfilesystem:us-east-2:123456789012:access-point/fsap-015cxmplb72b405fd) Controlla la configurazione di rete e riprova.
La funzione non è in grado di stabilire una connessione al file system della funzione con il protocollo NFS (porta TCP 2049). Controllare la configurazione del gruppo di sicurezza e del routing per le sottoreti del VPC.
Se riscontri questi errori dopo aver aggiornato le impostazioni di configurazione VPC della funzione, prova a smontare e rimontare il file system.
EFS: la funzione non è in grado di montare il file system EFS a causa del timeout
Errore: EFSMountTimeoutException: la funzione non è in grado di montare il file system EFS con il punto di accesso {arn:aws:elasticfilesystem:us-east-2:123456789012:access-point/fsap-015cxmplb72b405fd} a causa del timeout del montaggio.
La funzione è stata in grado di connettersi al file system della funzione, ma l'operazione di montaggio è scaduta. Riprovare dopo un po' di tempo e considerare di limitare la simultaneità della funzione per ridurre il carico sul file system.
Lambda: Lambda ha rilevato un processo IO che stava impiegando troppo tempo
EFSIOException: questa istanza della funzione è stata arrestata perché Lambda ha rilevato un processo I/O che richiede troppo tempo.
Si è verificato il timeout di una chiamata precedente e Lambda non è stata in grado di terminare l'handler della funzione. Questo problema può verificarsi quando un file system collegato esaurisce i crediti di burst e il throughput di base è insufficiente. Per aumentare il throughput, è possibile aumentare le dimensioni del file system o utilizzare il throughput assegnato.
Container: errori CodeArtifactUserException
Problema: messaggio di errore CodeArtifactUserPendingException
CodeArtifact è in attesa di ottimizzazione. La funzione passa allo stato attivo quando Lambda completa l'ottimizzazione. Codice di risposta HTTP: 409.
Problema: messaggio di errore CodeArtifactUserDeleteDexception
CodeArtifact è pianificato per essere eliminato. Codice di risposta HTTP: 409.
Problema: messaggio di errore CodeArtifactUserFailedException
Lambda non è riuscito a ottimizzare il codice. Correggere il codice e caricarlo di nuovo. Codice di risposta HTTP: 409.
Container: errori InvalidEntyPoint
Errore: runtime.exitError o «errorType»: «runtime.InvalidEntyPoint»
Verificare che l'elemento ENTRYPOINT dell'immagine container includa il percorso assoluto come posizione. Verificare inoltre che l'immagine non contenga un collegamento simbolico come ENTRYPOINT.
Errore: si utilizza un CloudFormation modello e il container ENTRYPOINT viene sovrascritto con un valore nullo o vuoto.
Esaminare la risorsa nel template. Se si dichiara una ImageConfig risorsa nel modello, è necessario fornire valori non vuoti per tutte e tre le proprietà.