View a markdown version of this page

Visualizza le chiamate alla funzione evento Lambda utilizzando AWS X-Ray - AWS Lambda

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

Visualizza le chiamate alla funzione evento Lambda utilizzando AWS X-Ray

Puoi utilizzarli AWS X-Ray per visualizzare i componenti dell'applicazione, identificare i punti deboli delle prestazioni e risolvere le richieste che hanno provocato un errore. Le funzioni degli eventi Lambda inviano dati di traccia e X-Ray li X-Ray elaborano per generare una mappa dei servizi e riepiloghi delle tracce ricercabili.

Lambda supporta due modalità di tracciamento per X-Ray: e. Active PassThrough Con il Active tracciamento, Lambda crea automaticamente segmenti di traccia per le chiamate di Event Function e li invia a. X-Ray PassThroughmode, d'altra parte, propaga semplicemente il contesto di tracciamento ai servizi a valle.

Se hai abilitato il Active tracciamento per la tua Event Function, Lambda invia automaticamente le tracce X-Ray alle richieste campionate. In genere, un servizio upstream, come Amazon API Gateway o un'applicazione ospitata su Amazon EC2 dotata di SDK, decide se tracciare X-Ray le richieste in entrata, quindi aggiunge la decisione di campionamento come intestazione di tracciamento. Lambda utilizza quell'intestazione per decidere se inviare tracce o meno. Le tracce dei produttori di messaggi upstream, come Amazon SQS, vengono automaticamente collegate alle tracce provenienti da Lambda Event Functions a valle, creando una vista end-to-end dell'intera applicazione. Per ulteriori informazioni, consulta Tracciamento delle applicazioni guidate dagli eventi nella Guida per gli sviluppatori di AWS X-Ray .

Nota

X-Ray il tracciamento non è attualmente supportato per Lambda Event Functions con Amazon Managed Streaming for Apache Kafka (Amazon MSK), Apache Kafka autogestito, Amazon MQ con ActiveMQ e RabbitMQ o mappature delle sorgenti di eventi Amazon DocumentDB.

Per attivare il tracciamento attivo sulla tua Lambda Event Function con la console, segui questi passaggi:

Per attivare il tracciamento attivo
  1. Apri la pagina Event Functions della console Lambda.

  2. Scegli una funzione di evento.

  3. Scegliere Configuration (Configurazione) e quindi Monitoring and operations tools (Strumenti di monitoraggio e operazioni).

  4. In Strumenti di monitoraggio aggiuntivi scegli Modifica.

  5. In CloudWatch Application Signals e AWS X-Ray, scegli Enable for Lambda service trace.

  6. Selezionare Salva.

La tua Event Function necessita dell'autorizzazione per caricare i dati di traccia su. X-Ray Quando attivi il tracciamento nella console Lambda, Lambda aggiunge le autorizzazioni richieste al ruolo di esecuzione della tua Event Function. Altrimenti, aggiungi la AWSXRayDaemonWriteAccesspolicy al ruolo di esecuzione.

X-Ray non traccia tutte le richieste alla tua applicazione. X-Ray applica un algoritmo di campionamento per garantire che il tracciamento sia efficiente, pur fornendo un campione rappresentativo di tutte le richieste. La frequenza di campionamento è di una richiesta al secondo e del 5% delle altre richieste. Non puoi configurare la frequenza di X-Ray campionamento per le tue funzioni.

Comprendere le tracce X-Ray

In X-Ray, una traccia registra le informazioni su una richiesta che viene elaborata da uno o più servizi. Lambda registra 2 segmenti per traccia, che creano due nodi sul grafico del servizio. L'immagine seguente evidenzia questi due nodi:

Una mappa dei X-Ray servizi con una sola funzione.

Il primo nodo a sinistra rappresenta il servizio Lambda che riceve la richiesta di chiamata. Il secondo nodo rappresenta la tua funzione evento Lambda specifica.

Il segmento registrato per il servizio Lambda, AWS::Lambda, copre tutti i passaggi necessari per preparare l'ambiente di esecuzione Lambda. Ciò include la pianificazione di MicroVM, la creazione o lo sblocco di un ambiente di esecuzione con le risorse configurate, nonché il download del codice per la funzione e di tutti i livelli.

Il AWS::Lambda::Function segmento è dedicato al lavoro svolto dalla Event Function.

Nota

AWS sta attualmente implementando modifiche al servizio Lambda. A causa di queste modifiche, potresti notare piccole differenze tra la struttura e il contenuto dei messaggi di registro di sistema e dei segmenti di traccia emessi da diverse funzioni di evento Lambda nel tuo. Account AWS

Questa modifica influisce sui sottosegmenti del segmento della funzione. I paragrafi seguenti descrivono sia il vecchio che il nuovo formato per questi sottosegmenti.

Queste modifiche verranno implementate nelle prossime settimane e tutte le funzioni, Regioni AWS ad eccezione della Cina e delle GovCloud regioni, passeranno all'utilizzo dei messaggi di registro e dei segmenti di traccia di nuovo formato.

Old-style AWS X-Ray Struttura del segmento Lambda

La X-Ray struttura vecchio stile del AWS::Lambda segmento è la seguente:

Diagramma che mostra la struttura di una traccia vecchio stile contenente un segmento X-Ray di invocazione.

In questo formato, il segmento della funzione ha sottosegmenti per Initialization, Invocation e Overhead. Solo per SnapStart, c'è anche un sottosegmento Restore (non mostrato in questo diagramma).

Il sottosegmento Initialization rappresenta la fase iniziale del ciclo di vita dell'ambiente di esecuzione Lambda. In questa fase, Lambda inizializza le estensioni, inizializza il runtime ed esegue il codice di inizializzazione della funzione.

Il sottosegmento Invocation rappresenta la fase di invocazione in cui Lambda richiama il gestore di funzioni. Questo inizia con la registrazione del runtime e dell'estensione e termina quando il runtime è pronto per inviare la risposta.

( SnapStart Solo Lambda) Il Restore sottosegmento mostra il tempo impiegato da Lambda per ripristinare un'istantanea, caricare il runtime ed eseguire eventuali hook di runtime successivi al ripristino. Il processo di ripristino degli snapshot può includere il tempo dedicato ad attività esterne alla MicroVM. Questa volta è riportato nel segmento secondario Restore. Non ti viene addebitato il tempo impiegato all'esterno della MicroVM per ripristinare un'istantanea.

Il sottosegmento Overhead rappresenta la fase che si verifica tra il momento in cui il runtime invia la risposta e il segnale per la successiva invocazione. Durante questo periodo, il runtime termina tutte le attività correlate a un'invocazione e si prepara a congelare la sandbox.

Importante

Puoi utilizzare l' X-Ray SDK per estendere il Invocation sottosegmento con sottosegmenti aggiuntivi per chiamate downstream, annotazioni e metadati. Non è possibile accedere direttamente al segmento di funzione o registrare la parola eseguita al di fuori dell'ambito di chiamata del gestore.

Per ulteriori informazioni sulle fasi dell'ambiente di esecuzione Lambda, consulta Comprendere il ciclo di vita dell’ambiente di esecuzione Lambda.

Nel diagramma seguente è illustrato un esempio di traccia che utilizza la struttura vecchio stile X-Ray .

Diagramma che mostra un esempio di traccia vecchio stile X-Ray contenente un segmento di invocazione.

Nota i due segmenti dell'esempio. Entrambi sono nominati my-function, ma uno ha l'origine AWS::Lambda e l'altro ha l'origine AWS::Lambda::Function. Se il segmento AWS::Lambda mostra un errore, il servizio Lambda ha avuto un problema. Se il AWS::Lambda::Function segmento mostra un errore, significa che la tua Event Function presentava un problema.

Nota

Occasionalmente, potresti notare un ampio divario tra le fasi di inizializzazione della funzione e di invocazione nelle tue tracce. X-Ray Per le funzioni che utilizzano la simultaneità fornita, ciò è dovuto al fatto che Lambda inizializza le istanze della funzione con largo anticipo rispetto all'invocazione. Per le funzioni evento che utilizzano la concorrenza non riservata (su richiesta), Lambda potrebbe inizializzare in modo proattivo un'istanza di funzione, anche se non viene effettuata alcuna chiamata. Visivamente, entrambi questi casi si presentano come un intervallo di tempo tra le fasi di inizializzazione e invocazione.

New-style AWS X-Ray Struttura del segmento Lambda

La nuova X-Ray struttura di stile per il AWS::Lambda segmento è simile alla seguente:

Diagramma che mostra la struttura di una traccia di nuovo stile senza segmento di invocazione X-Ray .

In questo nuovo formato, il sottosegmento Init rappresenta la fase iniziale del ciclo di vita dell'ambiente di esecuzione Lambda.

Nel nuovo formato non è presente alcun segmento di invocazione. I sottosegmenti dei clienti sono invece collegati direttamente al segmento AWS::Lambda::Function. Questo segmento contiene i seguenti parametri come annotazioni:

  • aws.responseLatency: il tempo impiegato per l'esecuzione della funzione

  • aws.responseDuration: il tempo impiegato per trasferire la risposta al cliente

  • aws.runtimeOverhead: la quantità di tempo supplementare necessaria al completamento del runtime

  • aws.extensionOverhead: la quantità di tempo supplementare necessaria al completamento delle estensioni

Nel diagramma seguente è illustrato un esempio di traccia che utilizza la X-Ray struttura di nuovo stile.

Diagramma che mostra un esempio di traccia di nuovo stile senza il segmento di invocazione X-Ray .

Nota i due segmenti dell'esempio. Entrambi sono nominati my-function, ma uno ha l'origine AWS::Lambda e l'altro ha l'origine AWS::Lambda::Function. Se il segmento AWS::Lambda mostra un errore, il servizio Lambda ha avuto un problema. Se il AWS::Lambda::Function segmento mostra un errore, significa che la tua Event Function presentava un problema.

Vedere i seguenti argomenti per un'introduzione specifica della lingua all'analisi in Lambda:

Per un elenco completo dei servizi che supportano la strumentazione attiva, consulta Servizi Servizi AWS supportati nella Guida per gli sviluppatori di AWS X-Ray .

Comportamento di tracciamento predefinito in Lambda

Se la funzione di Active tracciamento non è attivata, Lambda utilizza come impostazione predefinita PassThrough la modalità di tracciamento.

In PassThrough modalità, Lambda inoltra l'intestazione di X-Ray tracciamento ai servizi downstream, ma non invia le tracce automaticamente. Questo è vero anche se l'intestazione di tracciamento contiene la decisione di campionare la richiesta. Se il servizio upstream non fornisce un'intestazione di X-Ray tracciamento, Lambda genera un'intestazione e decide di non campionare. Tuttavia, puoi inviare le tue tracce richiamando le librerie di tracciamento dal codice Event Function.

Nota

In precedenza, Lambda inviava le tracce automaticamente quando i servizi upstream, come Amazon API Gateway, aggiungevano un'intestazione di tracciamento. Non inviando tracce automaticamente, Lambda ti offre il controllo necessario per tracciare le funzioni degli eventi che ritieni importanti. Se la tua soluzione dipende da questo comportamento di tracciamento passivo, passa al Active tracciamento.

Autorizzazioni del ruolo di esecuzione

Lambda necessita delle seguenti autorizzazioni per inviare dati di traccia a. X-Ray Aggiungili al ruolo di esecuzione della tua Event Function.

Queste autorizzazioni sono incluse nella politica AWSXRayDaemonWriteAccessgestita.

Abilitazione del tracciamento attivo con l'API Lambda

Per gestire la configurazione di tracciamento con AWS CLI o AWS SDK, utilizza le seguenti operazioni API:

Il AWS CLI comando di esempio seguente abilita il tracciamento attivo su una funzione denominata my-function.

aws lambda update-function-configuration --function-name my-function \ --tracing-config Mode=Active

La modalità di tracciamento fa parte della configurazione specifica della versione quando si pubblica una versione della funzione. Non è possibile modificare la modalità di tracciamento in una versione pubblicata.

Abilitazione del tracciamento attivo con CloudFormation

Per attivare il tracciamento su una AWS::Lambda::Function risorsa in un CloudFormation modello, utilizzate la TracingConfig proprietà.

Esempio function-inline.yml — Configurazione di tracciamento
Resources: function: Type: AWS::Lambda::Function Properties: TracingConfig: Mode: Active ...

Per una AWS::Serverless::Function risorsa AWS Serverless Application Model (AWS SAM), utilizzate la Tracing proprietà.

Esempio template.yml — Configurazione di tracciamento
Resources: function: Type: AWS::Serverless::Function Properties: Tracing: Active ...