

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 Lambda utilizzando AWS X-Ray
<a name="services-xray"></a>

Puoi utilizzarli AWS X-Ray per visualizzare i componenti dell'applicazione, identificare i punti deboli in termini di prestazioni e risolvere le richieste che hanno provocato un errore. Le funzioni Lambda inviano dati di traccia a X-Ray e X-Ray elabora i dati per generare una mappa di servizio e riepiloghi di traccia 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 funzioni e li invia a X-Ray. `PassThrough`mode, d'altra parte, propaga semplicemente il contesto di tracciamento ai servizi a valle. Se hai abilitato il `Active` tracciamento per la tua funzione, Lambda invia automaticamente le tracce a X-Ray per le richieste campionate. In genere, un servizio upstream, come Amazon API Gateway o un'applicazione ospitata su Amazon EC2 dotata di strumentazione con l'SDK X-Ray, decide se tracciare le richieste in entrata, quindi aggiunge tale 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 delle funzioni Lambda downstream, creando end-to-end una visualizzazione dell'intera applicazione. Per ulteriori informazioni, consulta [Tracciamento delle applicazioni guidate dagli eventi](https://docs.aws.amazon.com//xray/latest/devguide/xray-tracelinking.html) nella *Guida per gli sviluppatori di AWS X-Ray *.

**Nota**  
Il tracciamento X-Ray non è attualmente supportato per le funzioni Lambda con Streaming gestito da Amazon per Apache Kafka (Amazon MSK), Apache Kafka gestito dal cliente, Amazon MQ con ActiveMQ e RabbitMQ attivi oppure mappature delle origini degli eventi Amazon DocumentDB.

Per attivare il tracciamento attivo sulla funzione Lambda con la console, attenersi alla seguente procedura:

**Per attivare il tracciamento attivo**

1. Aprire la pagina [Funzioni](https://console.aws.amazon.com/lambda/home#/functions) della console Lambda.

1. Scegliere una funzione.

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

1. In **Strumenti di monitoraggio aggiuntivi** scegli **Modifica**.

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

1. Scegli **Save** (Salva).

La funzione ha bisogno dell'autorizzazione per caricare i dati di traccia su X-Ray. Quando si attiva il tracciamento nella console Lambda, Lambda aggiunge le autorizzazioni necessarie al [ruolo di esecuzione](lambda-intro-execution-role.md) della funzione. Altrimenti, aggiungi la [AWSXRayDaemonWriteAccess](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AWSXRayDaemonWriteAccess)policy al ruolo di esecuzione.

X-Ray non traccia tutte le richieste nell'applicazione. X-Ray applica un algoritmo di campionamento per garantire che il tracciamento avvenga in modo efficiente, continuando allo stesso tempo a fornire un campione rappresentativo di tutte le richieste. La frequenza di campionamento è di una richiesta al secondo e del 5% delle altre richieste. Non è possibile configurare la frequenza di campionamento di X-Ray per le funzioni.

## Informazioni sui monitoraggi di X-Ray
<a name="services-xray-traces"></a>

In X-Ray, una *traccia* registra informazioni su una richiesta 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:

![\[\]](http://docs.aws.amazon.com/it_it/lambda/latest/dg/images/xray-servicemap-function.png)


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

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 segmento `AWS::Lambda::Function` è destinato al lavoro svolto dalla funzione.

**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 log di sistema e dei segmenti di traccia emessi da diverse funzioni 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.

**Struttura a segmenti Lambda vecchio stile AWS X-Ray**  
La struttura X-Ray vecchio stile per il segmento `AWS::Lambda` è simile alla seguente:

![\[\]](http://docs.aws.amazon.com/it_it/lambda/latest/dg/images/V2_sandbox_images/v1_XRay_structure.png)


In questo formato, il segmento della funzione ha sottosegmenti per `Initialization`, `Invocation` e `Overhead`. Solo per [Lambda SnapStart](snapstart.md), 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.](snapstart-runtime-hooks.md) 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 trascorso fuori dalla microVM per il ripristino di una snapshot.

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**  
È possibile utilizzare l'SDK X-Ray per estendere il sottosegmento `Invocation` con sottosegmenti aggiuntivi per chiamate a valle, 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](lambda-runtime-environment.md).

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

![\[\]](http://docs.aws.amazon.com/it_it/lambda/latest/dg/images/V2_sandbox_images/my-function-2-v1.png)


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, la funzione ha avuto un problema.

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

**Struttura dei segmenti Lambda di nuova AWS X-Ray concezione**  
La struttura X-Ray nuovo stile per il segmento `AWS::Lambda` è simile alla seguente:

![\[\]](http://docs.aws.amazon.com/it_it/lambda/latest/dg/images/V2_sandbox_images/v2_XRay_structure.png)


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 struttura di X-Ray nuovo stile.

![\[\]](http://docs.aws.amazon.com/it_it/lambda/latest/dg/images/V2_sandbox_images/my-function-2-v2.png)


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, la funzione ha avuto un problema.

Vedere i seguenti argomenti per un'introduzione specifica della lingua all'analisi in Lambda:
+ [Strumentazione del codice Node.js in AWS Lambda](nodejs-tracing.md)
+ [Strumentazione del codice Python in AWS Lambda](python-tracing.md)
+ [Strumentazione del codice Ruby in AWS Lambda](ruby-tracing.md)
+ [Strumentazione del codice Java in AWS Lambda](java-tracing.md)
+ [Strumentazione del codice Go in AWS Lambda](golang-tracing.md)
+ [Strumentazione del codice C\$1 in AWS Lambda](csharp-tracing.md)

Per un elenco completo dei servizi che supportano la strumentazione attiva, consulta [Servizi Servizi AWS](https://docs.aws.amazon.com/xray/latest/devguide/xray-usage.html#xray-usage-codechanges) supportati nella Guida per gli sviluppatori di AWS X-Ray .

## Comportamento di tracciamento predefinito in Lambda
<a name="services-xray-default"></a>

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 tracciamento X-Ray ai servizi a valle, 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 tracciamento a raggi X, Lambda genera un'intestazione e decide di non campionare. Tuttavia, puoi inviare le tue tracce richiamando le librerie di tracciamento dal codice della funzione. 

**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 che ritieni importanti. Se la tua soluzione dipende da questo comportamento di tracciamento passivo, passa al `Active` tracciamento. 

## Autorizzazioni del ruolo di esecuzione
<a name="services-xray-permissions"></a>

Lambda richiede le seguenti autorizzazioni per inviare i dati di traccia a X-Ray. Aggiungerle al [ruolo di esecuzione](lambda-intro-execution-role.md) della funzione.
+ [Radiografia: PutTraceSegments](https://docs.aws.amazon.com/xray/latest/api/API_PutTraceSegments.html)
+ [radiografia: PutTelemetryRecords](https://docs.aws.amazon.com/xray/latest/api/API_PutTelemetryRecords.html)

Queste autorizzazioni sono incluse nella politica [AWSXRayDaemonWriteAccess](https://console.aws.amazon.com/iam/home?#/policies/arn:aws:iam::aws:policy/AWSXRayDaemonWriteAccess)gestita.

## Abilitazione del tracciamento `Active` con l'API Lambda
<a name="services-xray-api"></a>

Per gestire la configurazione di tracciamento con AWS CLI o AWS SDK, utilizza le seguenti operazioni API:
+ [UpdateFunctionConfiguration](https://docs.aws.amazon.com/lambda/latest/api/API_UpdateFunctionConfiguration.html)
+ [GetFunctionConfiguration](https://docs.aws.amazon.com/lambda/latest/api/API_GetFunctionConfiguration.html)
+ [CreateFunction](https://docs.aws.amazon.com/lambda/latest/api/API_CreateFunction.html)

**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 con `Active` CloudFormation
<a name="services-xray-cloudformation"></a>

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

**Example [function-inline.yml](https://github.com/awsdocs/aws-lambda-developer-guide/blob/master/templates/function-inline.yml) – Configurazione del tracciamento**  

```
Resources:
  function:
    Type: [AWS::Lambda::Function](https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/aws-resource-lambda-function.html)
    Properties:
      TracingConfig:
        Mode: Active
      ...
```

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

**Example [template.yml](https://github.com/awsdocs/aws-lambda-developer-guide/tree/main/sample-apps/blank-nodejs/template.yml) – Configurazione del tracciamento**  

```
Resources:
  function:
    Type: [AWS::Serverless::Function](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/sam-resource-function.html)
    Properties:
      Tracing: Active
      ...
```