

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

# AWS Lambda debug remoto
<a name="lambda-remote-debug"></a>

Ti AWS Toolkit for Visual Studio Code consente di eseguire il debug AWS Lambda delle funzioni in esecuzione nel cloud, direttamente in VS Code. Con il debug AWS Lambda remoto è possibile ispezionare le funzioni in esecuzione, impostare punti di interruzione, esaminare le variabili e eseguire il debug dettagliato senza modificare il flusso di lavoro di sviluppo esistente.

Le sezioni seguenti descrivono come utilizzare il debug remoto Lambda in. AWS Toolkit for Visual Studio Code

## Come funziona il debug remoto Lambda
<a name="w2aac17c43c19b7"></a>

Il AWS Toolkit consente il debug remoto modificando temporaneamente le funzioni Lambda con un livello di debug Lambda aggiuntivo ed estendendo il limite di timeout di chiamata Lambda a 900 secondi. Viene stabilita una connessione sicura tra il debugger locale e l'ambiente di runtime Lambda utilizzando Secure Tunneling. AWS IoT Questa connessione consente di utilizzare i punti di interruzione del codice locale per eseguire la funzione in modalità remota. Al termine della sessione di debug, tutte le modifiche temporanee vengono ripristinate automaticamente alle impostazioni originali.

## Nozioni di base
<a name="w2aac17c43c19b9"></a>

### Runtime supportati
<a name="w2aac17c43c19b9b3"></a>

I seguenti runtime sono supportati dal debug remoto Lambda.
+ Python (Amazon Linux 2023)
+ Java
+ Typescript/JavaScript/Node.js (Amazon Linux 2023)

**Nota**  
Le istanze gestite Lambda e i tipi di funzioni di immagine OCI non sono supportati dal debug remoto Lambda.

### Prerequisiti
<a name="w2aac17c43c19b9b5"></a>

Prima di iniziare, è necessario soddisfare i seguenti prerequisiti.
+ È necessario disporre di AWS credenziali valide configurate nel Toolkit. AWS Per ulteriori dettagli sull'installazione del AWS Toolkit e sulla configurazione delle credenziali, consulta l'argomento [Guida introduttiva](https://docs.aws.amazon.com//toolkit-for-vscode/latest/userguide/setting-up.html) di questa guida per l'utente. 
+ Una funzione Lambda è stata implementata nel tuo account. AWS Per i dettagli sulla distribuzione di una funzione Lambda, consulta [l'argomento Crea la tua prima funzione Lambda](https://docs.aws.amazon.com//lambda/latest/dg/getting-started.html) nella Guida per gli sviluppatori. *AWS Lambda*
+ È necessario disporre di policy e autorizzazioni AWS Identity and Access Management (IAM) appropriate per eseguire il debug della funzione. Per ulteriori dettagli sulle autorizzazioni Lambda, consulta l' AWS Lambda argomento relativo alle [politiche AWS gestite nella Guida per](https://docs.aws.amazon.com//lambda/latest/dg/security-iam-awsmanpol.html) gli *AWS Lambda*sviluppatori. Di seguito è riportato un esempio di policy che contiene le autorizzazioni minime richieste per lavorare con il debug remoto Lambda nel Toolkit. AWS 
**Nota**  
Il debug remoto è abilitato tramite Secure Tunneling. AWS AWS IoT Ciò consente al debugger locale di stabilire una connessione sicura all'ambiente di runtime Lambda.

  ```
  {
    "Version": "2012-10-17",		 	 	 
    "Statement": [
      {
        "Effect": "Allow",
        "Action": [
          "lambda:ListFunctions",
          "lambda:GetFunction",
          "lambda:GetFunctionConfiguration",
          "lambda:GetLayerVersion",
          "lambda:UpdateFunctionConfiguration",
          "lambda:InvokeFunction",
          "lambda:PublishVersion",
          "lambda:DeleteFunction",
          "iot:OpenTunnel",
          "iot:RotateTunnelAccessToken",
          "iot:ListTunnels"
        ],
        "Resource": "*"
      }
    ]
  }
  ```

## Accesso al debug remoto Lambda
<a name="w2aac17c43c19c11"></a>

Esistono due percorsi principali per accedere al debug remoto Lambda nel AWS Toolkit: l'explorer o l'Application Builder AWS explorer. Dall' AWS explorer, puoi accedere al debug remoto Lambda tramite i tuoi nodi. AWS Lambda Da Application Builder explorer, puoi accedere al debug remoto Lambda tramite i tuoi progetti locali. AWS SAM 

**Accesso al debug remoto Lambda dall'explorer AWS**

1. Da VS Code, apri l'estensione Toolkit. AWS 

1. Dal AWS Toolkit, espandi l' AWS explorer.

1. Dall'explorer, espandi il nodo **Lambda**.

1. Passa alla funzione di cui desideri eseguire il debug, quindi scegli l'icona **Invoke remotely dal menu contestuale per aprire la schermata di configurazione di **Remote** invoke**.

**Accesso al debug remoto Lambda dall'esploratore di Application Builder.**

1. Da VS Code, apri l'estensione Toolkit. AWS 

1. Dal AWS Toolkit, espandi l'application builder explorer.

1. Dall'explorer espandi il `AWS SAM` progetto che contiene il progetto Lambda di cui desideri eseguire il debug.

1. Espandi la `Lambda` funzione distribuita di cui desideri eseguire il debug.

1. Vai alla funzione remota, quindi scegli l'icona **Invoke remotely** dal menu contestuale per aprire la schermata di configurazione di **Remote** Invoke.

## Utilizzo del debug remoto Lambda
<a name="w2aac17c43c19c13"></a>

Le sezioni seguenti descrivono come utilizzare il debug remoto Lambda in. AWS Toolkit for Visual Studio Code

**Nota**  
Le funzioni Lambda hanno un limite di 5 livelli e un limite combinato di 250 MB per il codice funzione e tutti i livelli collegati. Il debug remoto Lambda richiede almeno 1 layer libero per essere eseguito.

### Configurazione di una sessione di debug
<a name="w2aac17c43c19c13b7"></a>

Prima di iniziare, configurate la sessione di debug completando la procedura seguente.

1. Apri il menu di **configurazione Remote invoke** completando la procedura Accessing *Lambda remote debugging dall' AWS explorer o la procedura Accessing Lambda* *remote debugging from the Application Builder explorer, che si trova nella sezione precedente*.

1. **Dal menu di **configurazione Remote Invoke**, selezionate la casella di controllo Remote Debugging per visualizzare le proprietà di debug remoto.**

1. Specificate il percorso **root locale del file del gestore locale**.
**Nota**  
Il percorso root locale è la posizione del codice sorgente che corrisponde alla funzione Lambda distribuita. Se stai lavorando da una funzione distribuita nell'Application Builder explorer, il percorso root locale viene rilevato automaticamente.  
Se il codice sorgente non è memorizzato localmente, scegli il pulsante **Scarica codice remoto** per recuperare il codice sorgente della funzione Lambda. Questo ti aprirà `handler file` nell'editor VS Code.

1. Dalla sezione **Payload**, specifica dove vengono ottenuti i dati degli eventi di test.

### Impostazione dei punti di interruzione e debug
<a name="w2aac17c43c19c13b9"></a>

Impostate i punti di interruzione e iniziate il debug completando la procedura seguente.

1. Dall'editor VS Code, fai clic sul margine laterale per impostare i punti di interruzione nei numeri di riga in cui desideri sospendere il debug. `handler file`

1. **Quando sei soddisfatto dei punti di interruzione, torna al menu di **configurazione di Remote invoke** per verificare che le impostazioni siano configurate correttamente, quindi scegli il pulsante Remote invoke per avviare il debug.**

1. Il AWS Toolkit aggiorna la funzione Lambda con funzionalità di debug, stabilisce un tunnel sicuro per la sessione di debug, richiama la funzione con il payload specificato, quindi sospende il processo quando raggiunge un punto di interruzione.

1. ********Durante una pausa, usa il pannello RUN AND DEBUG per visualizzare le variabili, lo stack di chiamate e i punti di interruzione.********

### Aggiornamento e test della funzione
<a name="w2aac17c43c19c13c11"></a>

Per modificare il codice e testare le modifiche con una distribuzione rapida, completa la procedura seguente.

1. Con la sessione di debug attiva, apporta modifiche all'editor VS `handler file` Code.

1. Salva le modifiche (,) **Command\$1S on macOS** **Ctrl\$1S on Windows**

1. Quando richiesto, confermate che desiderate procedere con la distribuzione delle modifiche. Il AWS Toolkit aggiornerà la funzione Lambda con il codice modificato.

1. **Continua a eseguire il debug e a testare le modifiche impostando nuovi punti di interruzione e selezionando nuovamente il pulsante Remote invoke.**
**Nota**  
 **In alternativa, puoi deselezionare l'opzione **Attach debugger nei controlli di debug** di VS Code e scegliere il pulsante Remote invoke per eseguire la funzione senza eseguire il debug.**

### Terminare una sessione di debug
<a name="w2aac17c43c19c13c13"></a>

Ciascuna delle seguenti opzioni termina la sessione di debug remota e rimuove il livello di debug dal progetto.
+ **Scegliendo l'opzione **Remove Debug Setup dalla schermata di configurazione** Remote Invoke.**
+ Scelta dell'icona di **disconnessione** dai controlli di debug di VS Code.
+ Chiusura dell'editor VS `handler file` Code.

**Nota**  
Prendi nota di quanto segue:  
Il livello di debug Lambda viene rimosso automaticamente dopo 60 secondi di inattività. Il conteggio inizia quando l'ultima chiamata è completa.
Se hai apportato modifiche al codice alle funzioni gestite da infrastructure-as-code (IAc) (AWS SAM AWS CDK, Terraform) durante il processo di debug, salvale nel progetto locale e valuta la possibilità di aggiornare il tuo repository di controllo del codice sorgente. Le modifiche non salvate vengono sovrascritte quando la funzione IAc viene ridistribuita.
Se hai apportato modifiche temporanee solo a scopo di debug, potresti voler ridistribuire la funzione dal controllo del codice sorgente per assicurarti che corrisponda al codice di produzione.

### Debug delle funzioni TypeScript Lambda con mappe di origine
<a name="typescript-source-maps"></a>

Le sezioni seguenti descrivono come eseguire il debug delle funzioni TypeScript Lambda con le mappe di origine.

#### Prerequisiti
<a name="w2aac17c43c19c13c15b5"></a>

Per eseguire il debug delle funzioni TypeScript Lambda, devono essere soddisfatti i seguenti prerequisiti.
+  TypeScript Devi essere compilato con l'opzione della mappa di origine abilitata. Per ulteriori informazioni, consulta l'argomento relativo al [supporto delle mappe di JavaScript origine](https://code.visualstudio.com/docs/typescript/typescript-debugging#_javascript-source-map-support) nella documentazione di VS Code.
+ Le mappe sorgente in linea non sono supportate. È necessario utilizzare un `.js.map` file separato per archiviare la mappa di origine.

#### Configurazione
<a name="w2aac17c43c19c13c15b7"></a>

Per configurare il debug remoto Lambda per le funzioni TypeScript Lambda nel Toolkit, completa AWS i seguenti passaggi.

1. Dal Toolkit, espandi l'explorer. AWS AWS 

1. Dall'explorer, espandi il nodo **Lambda**.

1. Passa alla funzione per cui desideri configurare TypeScript, quindi scegli l'icona **Invoke remotely dal menu contestuale per aprire la schermata di configurazione di **Remote invoke****.

1. **Abilita il debug remoto selezionando la casella di controllo Debug remoto.**

1. Configura il tuo **Local Root Path** puntando alla directory contenente il tuo. `TypeScript handler file`
**Nota**  
`TypeScript handler file`È dove imposti i punti di interruzione del debug.

1. Espandi le impostazioni di configurazione aggiuntive di **Remote debug**.

1. Abilita la mappatura delle sorgenti selezionando la casella di controllo **Mappa sorgente**.

1. Imposta il campo **Out files** nella directory locale della copia della funzione Lambda.  
**Example**  

   Se `app.js` e `app.map` sono inseriti`.aws-sam/build/HelloWorldFunction`, crea la posizione `/Users/user/project/aws-sam/build/HelloWorldFunction/*` dei **file Out**.
**Nota**  
Il percorso **del file Out** deve essere un percorso assoluto.  
Per qualsiasi AWS SAM AWS CDK progetto, il AWS Toolkit supporta il rilevamento automatico della mappa sorgente. Se il campo **Out files** viene lasciato vuoto per questi progetti, il toolkit tenterà automaticamente di rilevare la posizione della mappa di origine.

1. Quando sei soddisfatto delle impostazioni, scegli il pulsante **Richiamata remota** per iniziare il debug della funzione. TypeScript 

## Risoluzione dei problemi e casi d'uso avanzati
<a name="troubleshooting"></a>

Se la sessione di debug fallisce, avvia la procedura di risoluzione dei problemi completando questi passaggi.

1. Aggiorna il AWS Toolkit alla versione più recente.

1. Aggiorna la visualizzazione Web chiudendo la visualizzazione Web di **configurazione di Remote Invoke** e riaprendola.

1. Riavvia VS Code chiudendolo completamente e riaprendolo.

1. Apri la palette dei comandi VS Code e inserisci il comando**AWS: Reset Lambda Remote Debugging Snapshot**, selezionalo quando viene inserito nei risultati per reimpostare l'istantanea di debug remoto Lambda.

1. [Se non riesci a risolvere il problema, invia un problema a Problemi.AWS Toolkit for Visual Studio Code GitHub](https://github.com/aws/aws-toolkit-vscode/issues)

### Caso d'uso avanzato: configurazione della firma del codice
<a name="troubleshooting-code-signing-configuration"></a>

Il debug remoto richiede il collegamento di un livello di debug alla funzione Lambda. Se la funzione ha la configurazione della firma del codice abilitata e applicata, il AWS Toolkit non può collegare automaticamente il livello di debug alla funzione.

Esistono due opzioni per risolvere il problema di configurazione della firma del codice.
+ Rimuovi temporaneamente la firma del codice.
+ Usa un livello di debug firmato.

#### Rimuovere temporaneamente la firma del codice
<a name="troubleshooting-code-signing-configuration-temp-remove"></a>

Aggiorna la configurazione della firma del codice impostandola`UntrustedArtifactOnDeployment : Warn`, quindi riattivala al `Enforced` termine del processo di debug.

*Per ulteriori informazioni, consulta il riferimento nell'[UpdateCodeSigningConfig](https://docs.aws.amazon.com//lambda/latest/api/API_UpdateCodeSigningConfig.html)API Reference.AWS Lambda *

#### Utilizzo di un livello di debug firmato
<a name="troubleshooting-code-signing-configuration-signed-debug-layer"></a>

1. **Dal debug remoto Lambda nel AWS Toolkit, espandi la sezione Configurazione aggiuntiva per il debug remoto.**

1. Dalla sezione **Configurazione aggiuntiva di debug remoto**, copia l'ARN del livello regionale dal campo **Layer override**.

1. Da AWS CLI, usa il seguente comando per scaricare la versione del layer`aws lambda get-layer-version-by-arn --arn layer-arn`, sostituendo *layer-arn con il tuo layer ARN*. *Per istruzioni dettagliate su come scaricare il layer di debug firmato, vedete il riferimento [get-layer-version-by-arn](https://docs.aws.amazon.com/cli/latest/reference/lambda/get-layer-version-by-arn.html) nel Command Reference.AWS CLI *

1. Firma il layer con la tua configurazione di firma del codice e pubblicalo sul tuo account. Per istruzioni sulla firma e sulla pubblicazione, consulta l'argomento [Configurazione della firma a codice per l' AWS SAM applicazione](https://docs.aws.amazon.com/serverless-application-model/latest/developerguide/authoring-codesigning.html) nella Guida per gli *AWS Serverless Application Model sviluppatori*.

1. **Dopo che il layer è stato firmato e pubblicato sul tuo account, torna alla sezione di **configurazione aggiuntiva per il debug remoto** di Lambda remote debugging, quindi inserisci l'ARN del nuovo livello nel campo Layer override.** Una volta completato il processo, il debug remoto Lambda utilizza il livello firmato anziché il livello predefinito.

### Caso d'uso avanzato: funzioni di debug con o assegnazione simultanea SnapStart
<a name="troubleshooting-snapstart-provisioned-concurrency"></a>

Per le funzioni Lambda configurate SnapStart o fornite contemporaneamente, la pubblicazione di una nuova versione richiede molto più tempo. Per velocizzare il flusso di lavoro di debug, puoi configurare il debug remoto Lambda per aggiornare solo la `$LATEST` versione della tua funzione invece di pubblicare una nuova versione.

1. **Dalla schermata di configurazione **Remote invoke, espandi le impostazioni di configurazione aggiuntive di** Remote debug.**

1. Deselezionate l'opzione **Pubblica versione**.

1. Il AWS Toolkit ora aggiornerà solo la `$LATEST` versione della funzione ed eseguirà il debug utilizzandola.

**Nota**  
Come effetto collaterale del debug con la `$LATEST` versione, dovresti evitare altro traffico che potrebbe richiamare la tua `$LATEST` versione per garantire un ambiente di debug indisturbato.

### Regioni supportate
<a name="troubleshooting-regions"></a>

Il seguente errore si verifica quando una regione non supporta il debug remoto.

```
Region ${region} doesn't support remote debugging yet
```

Di seguito è riportato un elenco delle regioni supportate.
+ ap-east-1
+ ap-northeast-1
+ ap-northeast-2
+ ap-south-1
+ ap-southeast-1
+ ap-southeast-2
+ ca-central-1
+ eu-central-1
+ eu-north-1
+ eu-west-1
+ eu-west-2
+ eu-west-3
+ me-central-1
+ me-south-1
+ sa-east-1
+ us-east-1
+ us-east-2
+ us-west-1
+ us-west-2

### Lambda RequestEntityTooLargeException
<a name="troubleshooting-storage-limit"></a>

Le funzioni Lambda hanno un limite di 5 livelli e un limite combinato di 250 MB per il codice funzione e tutti i livelli collegati. Il livello di debug remoto è di circa 40 MB, il che potrebbe far sì che la funzione superi questo limite se si dispone di un pacchetto di funzioni di grandi dimensioni o di più livelli. Per ulteriori dettagli, consulta la sezione [Lambda: InvalidParameterValueException or RequestEntityTooLargeException](https://docs.aws.amazon.com//lambda/latest/dg/troubleshooting-deployment.html#troubleshooting-deployment-InvalidParameterValueException1) topic nella *AWS Lambda Developer* Guide.

L'elenco seguente descrive i modi per risolvere e correggere questo errore.
+ **Riduzione delle dimensioni della funzione**: ottimizza il codice della funzione e rimuovi le dipendenze non necessarie.
+ **Rimuovi i livelli non utilizzati: rimuovi temporaneamente i livelli** non essenziali durante il debug.
+ **Usa dipendenze esterne**: sposta le dipendenze di grandi dimensioni su uno storage esterno, come Amazon S3, e caricale in fase di esecuzione.

### Risoluzione dei problemi di debug in Java
<a name="troubleshooting-java-debugging"></a>

Per eseguire il debug di una funzione Java Lambda, devi avere la stessa versione di Java installata localmente che corrisponde alla versione runtime della funzione Lambda.

Ad esempio, quando si esegue il debug di una funzione Java 25, è necessario che Java 25 sia installato nell'ambiente locale in cui è in esecuzione il Toolkit. AWS Se si tenta di eseguire il debug di una funzione Java 25 con Java 21 o una versione precedente installata localmente, il debug remoto non sarà in grado di interrompersi nei punti di interruzione impostati.

Assicurati che la tua versione Java locale corrisponda alla versione di runtime della funzione Lambda prima di iniziare una sessione di debug.

### Quota di tunneling sicuro IoT superata
<a name="troubleshooting-tunnel-quota"></a>

Di seguito è riportato un esempio dell'*errore di superamento della quota del tunnel* che si verifica quando si raggiunge il limite giornaliero per le connessioni di tunneling AWS IoT sicure nel debug remoto Lambda.

```
Error creating/reusing tunnel: LimitExceededException: Exceeded quota of Lambda debugging tunnels
```

AWS IoT Le connessioni Secure Tunneling hanno le seguenti quote:
+ Al tunneling sicuro IoT di livello gratuito sono assegnate 10 connessioni al giorno.
+ Ogni tunnel supporta un'istanza VS Code per un massimo di 12 ore.
+ La quota si applica per AWS account, al giorno.

Se riscontri l'errore di tunneling AWS IoT sicuro, attendi il ripristino della quota giornaliera o contatta l' AWS assistenza per richiedere un aumento del limite di quota. [Per informazioni di contatto per l' AWS assistenza, consulta il portale di contatto dell'AWS assistenza.](https://aws.amazon.com/contact-us/) *Per informazioni dettagliate sul tunneling AWS IoT sicuro, consulta l'argomento relativo al [tunneling AWS IoT sicuro](https://docs.aws.amazon.com/iot/latest/developerguide/secure-tunneling.html) nella Guida per gli sviluppatori.AWS IoT *