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à.
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 (Runtime) valido. 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
Init
eInvoke
. -
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
Init
eInvoke
. -
Ottimizza il codice di inizializzazione della funzione: riduci il tempo necessario per l'inizializzazione per garantire che le fasi
Init
eInvoke
possano essere completate entro il timeout configurato. -
Aggiungi la gestione degli errori: una corretta gestione degli errori nel codice della funzione può impedire il fallimento dell'ambiente di esecuzione Lambda e l'attivazione di ripetuti tentativi di inizializzazione.
IAM: lambda: InvokeFunction non autorizzato
Errore: User: arn:aws:iam: :123456789012:user/developer non è autorizzato a eseguire: lambda: on resource: my-function InvokeFunction
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 il AWSLambdaruolo della policy AWS gestita al tuo utente o aggiungi una politica personalizzata che consenta l'azione sulla funzione di destinazione. lambda:InvokeFunction
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 (Runtime) valido. 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
ErroreResourceConflictException: 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 la concorrenza disponibile del tuo AWS account in una AWS regione in pool, utilizza la concorrenza 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 AWS servizio 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. AWS SDKs 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 confermare che viene utilizzata la concorrenza fornita, puoi controllare la metrica di ProvisionedConcurrencyInvocations Amazon CloudWatch . Un valore diverso da zero indica che la funzione sta elaborando le chiamate in ambienti di esecuzione inizializzati.
-
Verifica se la concorrenza delle funzioni supera il livello configurato di concorrenza fornita controllando la metrica. 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: KMSDisabled Eccezione: Lambda non è riuscita a 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 la concessione 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: La funzione non è riuscita a 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: La funzione non è riuscita a connettersi al file system Amazon EFS con 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 è riuscita a 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 di 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 interrotta perché Lambda ha rilevato un processo di I/O che impiegava 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.