Opzioni di configurazione per il debug di applicazioni serverless - AWSToolkit per 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 si apre illaunch.jsonfile per modificare le configurazioni di debug, è possibile utilizzare il codice VSIntelliSensefunzionalità per visualizzare e completare automaticamente le proprietà valide. Per attivare IntelliSense nell'editor, premiCtrl+Barra spaziatrice.

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

IntelliSense consente di trovare e definire le proprietà per richiamare le funzioni Lambda direttamente o conAWS SAMTemplate Template. È 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 di 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 dall'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 della funzione Lambda.

  • architecture— Architettura del processore dell'ambiente emulato in cui viene eseguita l'applicazione SAM Lambda locale. Per determinati runtime, è possibile sceglierearm64anziché l'impostazione di defaultx86_64architettura. Per ulteriori informazioni, consulta la pagina Creazione di una nuova applicazione serverless (locale) .

Per aver richiamato le risorse Lambda conAWS SAMTemplate, impostare i valori per quanto segueinvokeTargetcampi:

  • target: impostato su template.

  • templatePath— Il percorso aAWS 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 SAMTemplate Template. Nota,Kit di strumenti AWSriconosce implicitamente le funzioni definite conPackageType: ImagenellaAWS SAMTemplate comeImmagini diFunzioni 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 si scrive in un bucket Amazon S3 anziché impostare come hard-coded il nome del bucket in cui si esegue la scrittura, configurare tale nome come una variabile di ambiente.

Nota

Quando si specificano variabili di ambiente per un'applicazione serverless, è necessario aggiungere configurazioni a entrambiAWS SAMTemplate (template.yaml) e illaunch.jsonfile.

Esempio di formattazione per una variabile di ambiente nellaAWS SAMTemplate:

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 nellalaunch.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 megabyte (MB) di memoria fornita 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 a dove viene eseguito nel contenitore.

Per impostazione predefinita, il Toolkit per i set di codici VSlocalRootalla 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 con ilWorkingDirectoryparametro nel campoAWS CloudFormationFile di modello, almeno unopathMappingdeve 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 formattazionepathMappingsnellalaunch.jsonfile:

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

Avvertenze:

  • Per le funzioni Lambda basate su immagini .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 di tipo 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 di default.

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 delleAWS SAMTemplate utilizzando i parametri per inserire i 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 che il tuo esistentecondivisoAWSconfig file 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 del lancio del modello

Ecco un file di configurazione di avvio di unAWS SAMtarget del 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 file di configurazione di lancio 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": {} } } ] }