Opzioni di configurazione per il debug di applicazioni serverless - AWSToolkit for VS Code

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

Opzioni di configurazione per il debug di applicazioni serverless

Quando apri illaunch.jsonfile per modificare le configurazioni di debug, è possibile utilizzare il codice VSIntelliSensefunzione per visualizzare e completare automaticamente le proprietà valide. Per attivare IntelliSense nell'editor, premereCtrl+Barra spaziatrice.


            Utilizzo di IntelliSense di VS Code per trovare e completare proprietà di debug valide.

IntelliSense consente di trovare e definire le proprietà per richiamare le funzioni Lambda direttamente o conAWS SAMmodello. È inoltre possibile definire proprietà per "lambda" (come viene eseguita la funzione), "sam" (come la CLI AWS SAM costruisce l'applicazione) e "aws" (come vengono fornite le informazioni sulla connessione AWS).

AWS SAM: richiamo diretto del gestore Lambda diretto/richiamo Lambda basato sul modello
Proprietà Descrizione

type

Specifica quale estensione gestisce la configurazione di avvio. Sempre impostato su aws-sam per utilizzare la CLI AWS SAM costruire ed eseguire il debug localmente.

name

Specifica un nome facilmente leggibile da visualizzare nell'elenco Debug launch configuration (Configurazione di avvio del debug.

request

Specifica il tipo di configurazioneda eseguire con l'estensione designata (aws-sam). Sempre impostato su direct-invoke per avviare la funzione Lambda.

invokeTarget

Specifica il punto di ingresso per richiamare la risorsa.

Per richiamare direttamente la funzione Lambda, imposta i valori per i seguenti campi invokeTarget:

  • target: impostato su code.

  • lambdaHandler: il nome del gestore della funzione Lambda da richiamare.

  • projectRoot— Il percorso del file dell'applicazione contenente il gestore delle funzioni Lambda.

  • architecture— Architettura del processore dell'ambiente emulato in cui viene eseguita l'applicazione SAM Lambda locale. Per alcuni runtime, puoi sceglierearm64anziché il valore predefinitox86_64architettura. Per ulteriori informazioni, consultare Creazione di una nuova applicazione serverless (locale).

Per invocare le risorse Lambda con ilAWS SAM, impostare i valori per quanto segueinvokeTargetcampi:

  • target: impostato su template.

  • templatePath— Il percorso verso laAWS SAMfile di modello.

  • logicalId: il nome della risorsa della AWS::Lambda::Function o AWS::Serverless::Function da richiamare. È possibile trovare il nome della risorsa in formato YAMLAWS SAMmodello. Nota:Kit di strumenti AWSriconosce implicitamente le funzioni definite conPackageType: ImagenellaAWS SAMcome modelloBasato sull'immagineFunzioni Lambda. Per ulteriori informazioni, consultaPacchetti di implementazione LambdanellaAWS LambdaGuida per gli sviluppatori.

Proprietà di Lambda ("lambda")
Proprietà Descrizione

environmentVariables

Passa i parametri operativi alla funzione Lambda. Se ad esempio scrivi in un bucket Amazon S3 anziché impostare come hard-coding il nome del bucket in cui esegui la scrittura, configura tale nome come una variabile di ambiente.

Nota

Quando si specificano variabili d'ambiente per un'applicazione serverless, è necessario aggiungere configurazioni a entrambe leAWS SAMtemplate (template.yaml) e illaunch.jsonfile.

Esempio di formattazione per una variabile di ambiente nelAWS SAM: Modello

Resources: HelloWorldFunction: Type: AWS::Serverless::Function Properties: CodeUri: hello-world/ Handler: app.lambdaHandlerN10 Runtime: nodejs10.x Environment: Variables: SAMPLE1: Default Sample 1 Value

Esempio di formattazione per una variabile di ambiente nellaunch.jsonfile:

"environmentVariables": { "SAMPLE1": "My sample 1 value" }

payload

Fornisce due opzioni per il payload dell'evento fornito come input alla funzione Lambda.

  • "json": coppie chiave-valore in formato JSON che definiscono il payload dell'evento.

  • "path": un percorso del file utilizzato come payload dell'evento.

memoryMB

Specifica i megabyte (MB) di memoria forniti per l'esecuzione di una funzione Lambda richiamata.

runtime

Specifica il tempo di esecuzione utilizzato dalla funzione Lambda. Per ulteriori informazioni, consulta Tempi di esecuzione AWS Lambda.

timeoutSec

Imposta il tempo permesso, in secondi, prima del timeout della sessione di debug.

pathMappings

Specifica dove si trova il codice locale in relazione alla posizione in cui viene eseguito nel contenitore.

Per impostazione predefinita, il Toolkit for VS Code impostalocalRootalla radice del codice della funzione Lambda nell'area di lavoro locale eremoteRoota/var/task, che è la directory di lavoro predefinita per il codice in esecuzione in Lambda. Se la directory di lavoro viene modificata nel Dockerfile o conWorkingDirectoryparametro nelAWS CloudFormationfile di modello, almeno unopathMappingla voce deve essere specificata in modo che il debugger possa mappare correttamente i punti di interruzione impostati localmente al codice in esecuzione nel contenitore Lambda.

Esempio di formattazione perpathMappingsnellalaunch.jsonfile:

"pathMappings": [ { "localRoot": "${workspaceFolder}/sam-app/HelloWorldFunction", "remoteRoot": "/var/task" } ]

Avvertenze:

  • Per le funzioni Lambda basate su immagine .NET,remoteRootentry deve essere la directory di compilazione.

  • Per le funzioni Lambda basate su Node.js, è possibile specificare solo una singola voce di mappatura del percorso.

Il Toolkit for VS Code utilizza ilAWS SAMCLI per costruire ed eseguire il debug di applicazioni serverless a livello locale. È possibile configurare il comportamento dei comandi della CLI AWS SAM che utilizzano le proprietà della configurazione "sam" nel file launch.json.

Proprietà della CLI AWS SAM ("sam")
Proprietà Descrizione Valore predefinito

buildArguments

Configura il modo in cui il comando sam build costruisce il codice sorgente Lambda. Per visualizzare le opzioni di costruzione, consulta sam build nella Guida per gli sviluppatori di AWS Serverless Application Model.

Stringa vuota

containerBuild

Indica se costruire la funzione all'interno di un container Docker come Lambda.

false

dockerNetwork

Specifica il nome o l'ID di una rete Docker esistente a cui devono connettersi i container Docker Lambda con la rete bridge di default. Se non specificato, i container Lambda si connettono solo alla rete Docker bridge predefinita.

Stringa vuota

localArguments

Specifica ulteriori argomenti di richiamo locale.

Stringa vuota

skipNewImageCheck

Specifica se il comando deve saltare il pull dell'ultima immagine Docker per il tempo di esecuzione Lambda.

false

template

Personalizzazione dellaAWS SAMutilizzando i parametri per l'inserimento dei valori dei clienti. Per ulteriori informazioni, consultare Parametri nella Guida per l'utente AWS CloudFormation.

"parameters":{}

Proprietà della connessione AWS ("aws")
Proprietà Descrizione Valore predefinito

credentials

Seleziona un profilo specifico (ad esempio, profile:default) dal file di credenziali per ottenere le credenziali AWS.

LaAWScredenziali esistenticondivisoAWSfile config o condivisoAWSfile delle credenzialifornire al Toolkit for VS Code.

region

Imposta la regione AWS del servizio (ad esempio, us-east-1).

La regione AWS di default associata al profilo delle credenziali attive.

Esempio: Configurazione di avvio modello

Ecco un esempio di avvio file di configurazione per unAWS SAMtarget modello:

{ "configurations": [ { "type": "aws-sam", "request": "direct-invoke", "name": "my-example:HelloWorldFunction", "invokeTarget": { "target": "template", "templatePath": "template.yaml", "logicalId": "HelloWorldFunction" }, "lambda": { "payload": {}, "environmentVariables": {} } } ] }

Esempio: configurazione di avvio del codice

Ecco un esempio di avvio del file di configurazione per un target di funzione Lambda:

{ "configurations": [ { "type": "aws-sam", "request": "direct-invoke", "name": "my-example:app.lambda_handler (python3.7)", "invokeTarget": { "target": "code", "projectRoot": "hello_world", "lambdaHandler": "app.lambda_handler" }, "lambda": { "runtime": "python3.7", "payload": {}, "environmentVariables": {} } } ] }