Test ed esegui il debug delle funzioni Lambda @Edge - Amazon CloudFront

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à.

Test ed esegui il debug delle funzioni Lambda @Edge

È importante testare il codice della funzione Lambda @Edge in modo indipendente, per assicurarsi che completi l'attività prevista, ed eseguire test di integrazione, per assicurarsi che la funzione funzioni correttamente. CloudFront

Durante i test di integrazione o dopo la distribuzione della funzione, potrebbe essere necessario eseguire il debug di CloudFront errori, come gli errori HTTP 5xx. Gli errori possono essere una risposta non valida restituita dalla funzione Lambda, gli errori di esecuzione quando la funzione è attivata, oppure gli errori dovuti al throttling di esecuzione da parte del servizio Lambda. Le sezioni in questo argomento condividono le strategie per determinare quale tipo di errore è il problema, e quindi quale procedura adottare per risolvere il problema.

Nota

Quando esamini i file di CloudWatch registro o le metriche durante la risoluzione degli errori, tieni presente che vengono visualizzati o archiviati nella posizione Regione AWS più vicina alla posizione in cui è stata eseguita la funzione. Quindi, se hai un sito Web o un'applicazione Web con utenti nel Regno Unito e hai una funzione Lambda associata alla tua distribuzione, ad esempio, devi modificare la regione per visualizzare le CloudWatch metriche o i file di registro per Londra. Regione AWS Per ulteriori informazioni, consulta Determina la regione Lambda @Edge.

Testa le tue funzioni Lambda @Edge

Sono disponibili due fasi per il test della funzione Lambda: test autonomo e test di integrazione.

Test di funzionalità autonoma

Prima di aggiungere la funzione Lambda CloudFront, assicurati di testarla prima utilizzando le funzionalità di test nella console Lambda o utilizzando altri metodi. Per ulteriori informazioni sui test nella console Lambda, consulta Invocare una funzione Lambda utilizzando la console nella Developer Guide.AWS Lambda

Verifica il funzionamento della tua funzione in CloudFront

È importante completare i test di integrazione, in cui la funzione è associata a una distribuzione ed è eseguita in base a un CloudFront evento. Assicurati che la funzione sia attivata per l'evento giusto e restituisca una risposta valida e corretta per CloudFront. Ad esempio, assicuratevi che la struttura dell'evento sia corretta, che siano incluse solo intestazioni valide e così via.

Mentre esegui il test di integrazione con la tua funzione nella console Lambda, fai riferimento ai passaggi del tutorial Lambda @Edge mentre modifichi il codice o cambi il trigger che chiama CloudFront la tua funzione. Ad esempio, assicurati che si stia utilizzando una versione numerata della tua funzione, come descritto in questa fase del tutorial: Fase 4: Aggiungere un CloudFront trigger per eseguire la funzione.

Mentre apporti modifiche e le distribuisci, tieni presente che ci vorranno diversi minuti prima che la funzione e i CloudFront trigger aggiornati si replichino in tutte le regioni. Questa operazione di solito richiede alcuni minuti, in alcuni casi fino a 15.

Puoi verificare se la replica è terminata accedendo alla CloudFront console e visualizzando la distribuzione.

Per verificare se la replica è terminata la distribuzione
  1. Apri la CloudFront console all'indirizzo. https://console.aws.amazon.com/cloudfront/v4/home

  2. Scegli il nome della distribuzione.

  3. Controlla che lo stato della distribuzione torni da In Progress (In corso) a Deployed (Implementato), il che significa che la funzione è stata replicata. Quindi segui la procedura nella sezione successiva per verificare che la funzione sia attiva.

Tieni presente che il test nella console convalida solo la logica della funzione e non applica quote di servizio (precedentemente note come limiti) specifiche di Lambda@Edge.

Identifica gli errori della funzione Lambda @Edge in CloudFront

Dopo aver verificato il corretto funzionamento della logica della funzione, potresti continuare a visualizzare errori HTTP 5xx durante l'esecuzione della funzione. CloudFront Gli errori HTTP 5xx possono essere restituiti per diversi motivi, tra cui errori della funzione Lambda o altri problemi in. CloudFront

  • Se utilizzi le funzioni Lambda @Edge, puoi utilizzare i grafici nella CloudFront console per individuare la causa dell'errore e quindi lavorare per correggerlo. Ad esempio, puoi vedere se gli errori HTTP 5xx sono causati da CloudFront o da funzioni Lambda e quindi, per funzioni specifiche, puoi visualizzare i file di registro correlati per esaminare il problema.

  • Per risolvere gli errori HTTP in generale in CloudFront, consulta la procedura di risoluzione dei problemi nel seguente argomento:. Risoluzione di risposte di errore dall'origine

Cosa causa gli errori della funzione Lambda @Edge in CloudFront

Ci sono vari motivi per cui una funzione Lambda potrebbe causare un errore HTTP 5xx e i passaggi di risoluzione dei problemi da eseguire variano a seconda del tipo di errore. Gli errori possono essere classificati come riportato di seguito:

Un errore di esecuzione della funzione Lambda

Si verifica un errore di esecuzione quando CloudFront non riceve una risposta da Lambda perché ci sono eccezioni non gestite nella funzione o c'è un errore nel codice. Ad esempio, se il codice include callback (Error).

Viene restituita una risposta alla funzione Lambda non valida a CloudFront

Dopo l'esecuzione della funzione, CloudFront riceve una risposta da Lambda. Si verifica un errore nel caso in cui la struttura dell'oggetto della risposta non è conforme a Struttura dell'evento Lambda@Edge, oppure la risposta contiene le intestazioni non valide o altri campi non validi.

L'esecuzione in CloudFront è limitata a causa delle quote del servizio Lambda (precedentemente note come limiti)

Il servizio Lambda limita le esecuzioni in ciascuna regione e restituisce un errore se si supera la quota. Per ulteriori informazioni, consulta Quote di Lambda@Edge.

Come stabilire il tipo di errore

Per aiutarti a decidere dove concentrarti mentre esegui il debug e lavori per risolvere gli errori restituiti da CloudFront, è utile identificare il motivo per cui sta restituendo un errore HTTP. CloudFront Per iniziare, puoi utilizzare i grafici forniti nella sezione Monitoraggio della CloudFront console su. AWS Management Console Per ulteriori informazioni sulla visualizzazione dei grafici nella sezione Monitoraggio della CloudFront console, vedere. Monitora le CloudFront metriche con Amazon CloudWatch

I seguenti grafici possono essere particolarmente utili quando desideri stabilire se gli errori vengono restituiti da origini o da una funzione Lambda e limitare il tipo di problema quando si tratta di un errore di una funzione Lambda.

Grafico delle percentuali di errore

Uno dei grafici che puoi visualizzare nella scheda Overview (Panoramica) per ciascuna delle distribuzioni è un grafico Error rates (Percentuali di errore). Questo grafico visualizza la percentuale di errori come una percentuale di richieste totali pervenute alla distribuzione. Il grafico mostra la percentuale di errori totale, gli errori 4xx totali, gli errori 5xx totali e gli errori 5xx totali da funzioni Lambda. In base al tipo di errore e al volume, puoi eseguire fasi per individuare e risolvere la causa.

Grafico dei tassi di errore per una distribuzione CloudFront
  • Se sono visibili errori Lambda, puoi indagare ulteriormente osservando i tipi di errori specifici restituiti dalla funzione. La scheda Lambda@Edge errors (Errori Lambda@Edge) include grafici che classificano errori di funzioni in base al tipo per individuare il problema per una funzione specifica.

  • Se riscontri CloudFront degli errori, puoi risolverli e correggere gli errori di origine o modificare la CloudFront configurazione. Per ulteriori informazioni, consulta Risoluzione di risposte di errore dall'origine.

Errori di esecuzione e grafici delle rispose di funzione non validi

La scheda Lambda@Edge errors (Errori Lambda@Edge) include grafici che classificano gli errori Lambda@Edge per una distribuzione specifica, in base al tipo. Ad esempio, un grafico mostra tutti gli errori di esecuzione per. Regione AWS

Per semplificare la risoluzione dei problemi, è possibile cercare problemi specifici aprendo ed esaminando i file di registro per individuare funzioni specifiche per regione.

Per visualizzare i file di registro per una funzione specifica per regione
  1. Nella scheda Errori Lambda @Edge, in Funzioni associate Lambda @Edge, scegli il nome della funzione, quindi scegli Visualizza metriche.

  2. Successivamente, nella pagina con il nome della funzione, nell'angolo in alto a destra, scegli Visualizza registri delle funzioni, quindi scegli una regione.

    Ad esempio, se vedi problemi nel grafico degli errori per la regione Stati Uniti occidentali (Oregon), scegli quella regione dall'elenco a discesa. Verrà aperta la CloudWatch console Amazon.

  3. Nella CloudWatch console di quella regione, in Log stream, scegli un flusso di log per visualizzare gli eventi relativi alla funzione.

Inoltre, leggi le seguenti sezioni in questo capitolo per ulteriori suggerimenti sulla risoluzione dei problemi e la correzione degli errori.

Grafico di throttling

La scheda Lambda@Edge errors (Errori Lambda@Edge) include anche un grafico Throttles (Throttle). Talvolta, il servizio Lambda limita le invocazioni della funzione in base alla regione, se raggiungi la quota (precedentemente nota come limite) di simultaneità regionale. Se viene visualizzato un errore di superamento del limite, la tua funzione ha raggiunto una quota che il servizio Lambda impone sulle esecuzioni in una regione. Per ulteriori informazioni su come richiedere un aumento della quota, consulta Quote di Lambda@Edge.

Grafico Throttle per l'esecuzione della funzione Lambda @Edge.

Per un esempio su come utilizzare queste informazioni nella risoluzione di errori HTTP, consulta Quattro fasi per il debug della distribuzione di contenuti su AWS.

Risoluzione dei problemi relativi alle risposte non valide della funzione Lambda @Edge (errori di convalida)

Se identifichi che il problema è un errore di convalida Lambda, significa che la funzione Lambda sta restituendo una risposta non valida a. CloudFront Segui le indicazioni in questa sezione per prendere provvedimenti per rivedere la tua funzione e assicurarti che la risposta sia conforme ai requisiti. CloudFront

CloudFront convalida la risposta di una funzione Lambda in due modi:

  • La risposta Lambda deve rispettare la struttura richiesta dell'oggetto. Tra gli esempi di errata struttura dell'oggetto figurano i seguenti: JSON non analizzabile, campi obbligatori mancanti e un oggetto non valido nella risposta. Per ulteriori informazioni, consulta Struttura dell'evento Lambda@Edge.

  • La risposta deve includere solo i valori di oggetti validi. Si verifica un errore se la risposta include un oggetto valido ma con valori non supportati. Alcuni esempi sono i seguenti: l'aggiunta o l'aggiornamento di intestazioni inserite nella blacklist o di sola lettura (consulta Restrizioni sulle funzioni edge) che superano la dimensione del corpo massima (consulta Restrizioni sulla dimensione della risposta generata nell’argomento Lambda@Edge Errori) e caratteri o valori non validi (vedi Struttura dell'evento Lambda@Edge).

Quando Lambda restituisce una risposta non valida a CloudFront, i messaggi di errore vengono scritti nei file di registro che vengono CloudFront inviati nella regione CloudWatch in cui è stata eseguita la funzione Lambda. È il comportamento predefinito a cui inviare i file di registro in CloudWatch caso di risposta non valida. Tuttavia, se hai associato una funzione Lambda a CloudFront prima del rilascio della funzionalità, potrebbe non essere abilitata per la tua funzione. Per ulteriori informazioni, vedi Determinare se il tuo account invia i log a CloudWatch più avanti nell'argomento.

CloudFront invia i file di registro nella regione corrispondente a dove è stata eseguita la funzione, nel gruppo di log associato alla distribuzione. I gruppi di log hanno il seguente formato:/aws/cloudfront/LambdaEdge/DistributionId, DistributionIddov'è l'ID della tua distribuzione. Per determinare la regione in cui trovare i file di CloudWatch registro, consulta Determinazione della regione Lambda @Edge più avanti in questo argomento.

Se l'errore è riproducibile, puoi creare una nuova richiesta che genera l'errore e quindi trovare l'ID della richiesta in una CloudFront risposta non riuscita (X-Amz-Cf-Idintestazione) per individuare un singolo errore nei file di registro. La voce del file di log contiene informazioni che consentono di identificare perché l'errore viene restituito ed elenca anche l'id della richiesta Lambda corrispondente che permette di analizzare la causa principale nel contesto di una singola richiesta.

Se un errore è intermittente, è possibile utilizzare i log di CloudFront accesso per trovare l'ID della richiesta per una richiesta non riuscita e quindi cercare nei CloudWatch log i messaggi di errore corrispondenti. Per ulteriori informazioni, consulta la sezione precedente, Determinazione del Tipo di fallimento.

Risolvi gli errori di esecuzione della funzione Lambda @Edge

Se il problema è un errore di esecuzione Lambda, può essere utile creare istruzioni di registrazione per le funzioni Lambda, scrivere messaggi nei file di CloudWatch registro che monitorano l'esecuzione della funzione CloudFront e determinare se funziona come previsto. Quindi puoi cercare queste istruzioni nei file di CloudWatch registro per verificare che la tua funzione funzioni.

Nota

Anche se non hai modificato la funzione Lambda@Edge, gli aggiornamenti per l'ambiente di esecuzione della funzione Lambda potrebbero influenzarla e potrebbero restituire un errore di esecuzione. Per informazioni sui test e la migrazione a una versione successiva, consulta Prossimi aggiornamenti dell'ambiente di esecuzione AWS Lambda e AWS Lambda @Edge.

Determina la regione Lambda @Edge

Per vedere le regioni in cui la tua funzione Lambda @Edge riceve traffico, visualizza le metriche per la funzione sulla CloudFront console su. AWS Management Console Le metriche vengono visualizzate per ogni regione. AWS Nella stessa pagina, puoi scegliere una regione e visualizzare i file di log per tale regione, in modo da analizzare i problemi. È necessario esaminare i file di CloudWatch registro nella AWS regione corretta per visualizzare i file di registro creati durante l' CloudFront esecuzione della funzione Lambda.

Per ulteriori informazioni sulla visualizzazione dei grafici nella sezione Monitoraggio della CloudFront console, consulta. Monitora le CloudFront metriche con Amazon CloudWatch

Determina se il tuo account invia i log a CloudWatch

Per impostazione predefinita, CloudFront abilita la registrazione delle risposte della funzione Lambda non valide e invia i file di registro utilizzando uno dei. CloudWatch Ruoli collegati ai servizi per Lambda@Edge Se hai funzioni Lambda @Edge che hai aggiunto CloudFront prima del rilascio della funzionalità di registro delle risposte della funzione Lambda non valida, la registrazione viene abilitata al successivo aggiornamento della configurazione Lambda @Edge, ad esempio aggiungendo un trigger. CloudFront

Puoi verificare che l'invio dei file di registro a CloudWatch sia abilitato per il tuo account effettuando le seguenti operazioni:

  • Controlla se i log vengono visualizzati in CloudWatch: assicurati di cercare nella regione in cui è stata eseguita la funzione Lambda @Edge. Per ulteriori informazioni, consulta Determina la regione Lambda @Edge.

  • Determina se il ruolo correlato collegato al servizio esiste nel tuo account in IAM: devi avere il ruolo AWSServiceRoleForCloudFrontLogger IAM nel tuo account. Per ulteriori informazioni su questo ruolo, consulta Ruoli collegati ai servizi per Lambda@Edge.