

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

# Strumentazione del codice Go in AWS Lambda
<a name="golang-tracing"></a>

Lambda si integra con AWS X-Ray per aiutarti a tracciare, eseguire il debug e ottimizzare le applicazioni Lambda. Puoi usarlo X-Ray per tracciare una richiesta mentre attraversa le risorse dell'applicazione, che possono includere funzioni Lambda e altri servizi. AWS 

Per inviare i dati di tracciamento a X-Ray, puoi utilizzare una delle due librerie SDK:
+ [AWS Distro for OpenTelemetry (ADOT)](https://aws.amazon.com/otel): una distribuzione sicura, pronta per la produzione e AWS supportata dell'SDK (Otel). OpenTelemetry 
+ [AWS X-Ray SDK for](https://docs.aws.amazon.com/xray/latest/devguide/xray-sdk-go.html) Go: un SDK per la generazione e l'invio di dati di traccia a. X-Ray

Ciascuno degli SDK offre modi per inviare i dati di telemetria al servizio. X-Ray Puoi quindi utilizzarli X-Ray per visualizzare, filtrare e ottenere informazioni dettagliate sulle metriche delle prestazioni dell'applicazione per identificare problemi e opportunità di ottimizzazione.

**Importante**  
Powertools for AWS Lambda SDK X-Ray e Powertools fanno parte di una soluzione di strumentazione strettamente integrata offerta da. AWS I livelli Lambda ADOT fanno parte di uno standard di settore per la strumentazione di tracciamento che in generale raccoglie più dati, ma potrebbero non essere adatti a tutti i casi d'uso. È possibile implementare la tracciabilità end-to-end utilizzando entrambe le soluzioni. X-Ray Per saperne di più sulla scelta tra di esse, consulta [Scelta tra AWS Distro for Open](https://docs.aws.amazon.com/xray/latest/devguide/xray-instrumenting-your-app.html#xray-instrumenting-choosing) Telemetry e SDK. X-Ray 

**Topics**
+ [Utilizzo di ADOT per strumentare le funzioni Go](#golang-adot)
+ [Utilizzo dell'SDK per strumentare le funzioni X-Ray Go](#golang-xray-sdk)
+ [Attivazione del tracciamento con la console Lambda](#golang-tracing-console)
+ [Attivazione del tracciamento con l'API Lambda](#golang-tracing-api)
+ [Attivazione del tracciamento con CloudFormation](#golang-tracing-cloudformation)
+ [Interpretazione e traccia X-Ray](#golang-tracing-interpretation)

## Utilizzo di ADOT per strumentare le funzioni Go
<a name="golang-adot"></a>

ADOT fornisce [livelli](chapter-layers.md) Lambda completamente gestiti che mettono insieme tutto il necessario per raccogliere i dati di telemetria utilizzando l'SDK OTel. Usando questo livello, è possibile strumentare le funzioni Lambda senza dover modificare alcun codice funzione. È inoltre possibile configurare il livello per eseguire l'inizializzazione personalizzata di OTel. Per ulteriori informazioni, consulta la sezione relativa alla [configurazione personalizzata per ADOT Collector su Lambda](https://aws-otel.github.io/docs/getting-started/lambda#custom-configuration-for-the-adot-collector-on-lambda) nella documentazione di ADOT.

Per i runtime Go, puoi aggiungere il **livello Lambda gestito da AWS per ADOT Go** per strumentare automaticamente le tue funzioni. Per istruzioni dettagliate su come aggiungere questo layer, consulta [AWS Distro for OpenTelemetry Lambda Support for](https://aws-otel.github.io/docs/getting-started/lambda/lambda-go) Go nella documentazione ADOT. Per istruzioni sulla conversione degli eventi dell'API Lambda Telemetry in intervalli, consulta. OpenTelemetry [`Conversione degli oggetti Event dell'API Lambda Telemetry in Spans` OpenTelemetry](telemetry-otel-spans.md)

## Utilizzo dell'SDK per strumentare le funzioni X-Ray Go
<a name="golang-xray-sdk"></a>

Per registrare i dettagli sulle chiamate che la funzione Lambda effettua ad altre risorse dell'applicazione, puoi anche utilizzare l' AWS X-Ray SDK for Go. [Per scaricare l'SDK, scarica l'SDK dal suo repository con: GitHub ](https://github.com/aws/aws-xray-sdk-go) `go get`

```
go get github.com/aws/aws-xray-sdk-go
```

Per utilizzare i client AWS SDK di Instrument, passate il client al metodo. `xray.AWS()` Quindi potrai tracciare le chiamate utilizzando la versione `WithContext` del metodo.

```
svc := s3.New(session.New())
xray.AWS(svc.Client)
...
svc.ListBucketsWithContext(ctx aws.Context, input *ListBucketsInput)
```

Dopo aver aggiunto le dipendenze corrette e apportato le modifiche necessarie al codice, attiva il tracciamento nella configurazione della funzione tramite la console Lambda o l'API.

## Attivazione del tracciamento con la console Lambda
<a name="golang-tracing-console"></a>

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](https://console.aws.amazon.com/lambda/home#/functions) della console Lambda.

1. Scegli una funzione di evento.

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. Selezionare **Salva**.

## Attivazione del tracciamento con l'API Lambda
<a name="golang-tracing-api"></a>

Configura il tracciamento sulla tua funzione Lambda con AWS o SDK, utilizza AWS CLI 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.

## Attivazione del tracciamento con CloudFormation
<a name="golang-tracing-cloudformation"></a>

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

**Example [function-inline.yml](https://github.com/awsdocs/aws-lambda-developer-guide/blob/master/templates/function-inline.yml) — Configurazione di 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 di tracciamento**  

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

## Interpretazione e traccia X-Ray
<a name="golang-tracing-interpretation"></a>

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.](lambda-intro-execution-role.md) Altrimenti, aggiungi la [AWSXRayDaemonWriteAccess](https://console.aws.amazon.com/iam/home#/policies/arn:aws:iam::aws:policy/AWSXRayDaemonWriteAccess)policy al ruolo di esecuzione.

Dopo aver configurato il tracciamento attivo, è possibile osservare richieste specifiche tramite l'applicazione. Il [grafico del X-Ray servizio](https://docs.aws.amazon.com/xray/latest/devguide/aws-xray.html#xray-concepts-servicegraph) mostra informazioni sull'applicazione e su tutti i suoi componenti. Il seguente esempio mostra un'applicazione con due funzioni. La funzione principale elabora gli eventi e talvolta restituisce errori. La seconda funzione in alto elabora gli errori che compaiono nel gruppo di log della prima e utilizza l' AWS SDK per chiamare X-Ray Amazon Simple Storage Service (Amazon S3) e Amazon Logs. CloudWatch 

![Un diagramma che mostra due applicazioni separate e le rispettive mappe dei servizi in X-Ray](https://docs.aws.amazon.com/it_it/lambda/latest/dg/images/sample-errorprocessor-servicemap.png)


X-Ray non tiene traccia di tutte le richieste all'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.

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.](https://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. L'esempio seguente mostra una traccia con questi 2 segmenti. 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.

![Una X-Ray traccia che mostra la latenza in ogni sottosegmento di una chiamata Lambda specifica.](https://docs.aws.amazon.com/it_it/lambda/latest/dg/images/V2_sandbox_images/my-function-2-v1.png)


Questo esempio espande il segmento `AWS::Lambda::Function` per visualizzare i relativi tre sottosegmenti.

**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  
La traccia di esempio mostrata qui illustra il segmento di funzione vecchio stile. Le differenze tra i segmenti vecchio e nuovo stile sono descritte nei paragrafi seguenti.  
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.

Il segmento di funzioni vecchio stile contiene i seguenti sottosegmenti:
+ **Inizializzazione** – Rappresenta il tempo trascorso a caricare la funzione e ad eseguire il [codice di inizializzazione](foundation-progmodel.md). Questo sottosegmento viene visualizzato solo per il primo evento che viene elaborato da ogni istanza della funzione.
+ **Chiamata**: rappresenta il tempo impiegato per eseguire il codice del gestore.
+ **Overhead**: rappresenta il tempo impiegato dal runtime Lambda per prepararsi a gestire l'evento successivo.

Il segmento di funzione di nuovo stile non contiene un sottosegmento `Invocation`. I sottosegmenti dei clienti sono invece collegati direttamente al segmento di funzioni. Per ulteriori informazioni sulla struttura dei segmenti di funzioni vecchio e nuovo stile, consulta [Comprendere le tracce X-Ray](services-xray.md#services-xray-traces).

È inoltre possibile strumentare i client HTTP, registrare query SQL e creare segmenti secondari personalizzati con annotazioni e metadati. Per ulteriori informazioni, consulta [SDK AWS X-Ray per Go](https://docs.aws.amazon.com/xray/latest/devguide/xray-sdk-python.html) nella *Guida per gli sviluppatori di AWS X-Ray *.

**Prezzi**  
Puoi utilizzare il X-Ray tracciamento gratuitamente ogni mese fino a un determinato limite come parte del piano gratuito. AWS Oltre tale soglia, verranno X-Ray addebitati i costi per l'archiviazione e il recupero delle tracce. Per ulteriori informazioni, consulta [Prezzi di AWS X-Ray](https://aws.amazon.com/xray/pricing/).