Konfigurationsoptionen für das Debuggen von serverless Anwendungen - AWS Toolkit for VS Code

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Konfigurationsoptionen für das Debuggen von serverless Anwendungen

Beim Öffnen deslaunch.json-Datei, um Debug-Konfigurationen zu bearbeiten, können Sie den VS-Code verwendenIntelliSenseFunktion zum Anzeigen und automatischen Vervollständigen gültiger Eigenschaften. Auslöservolumen IntelliSense drücken Sie im EditorCtrl+Leertaste.

Verwenden von VS-Codes IntelliSense um gültige Debug-Eigenschaften zu finden und zu vervollständigen.

IntelliSense ermöglicht es Ihnen, Eigenschaften zum Aufrufen von Lambda Funktionen direkt oder mit derAWS SAM-Vorlage. Sie können auch Eigenschaften für "lambda" definieren (wie die Funktion ausgeführt wird), "sam" (wie das AWS SAM CLI die Anwendung entwickelt) und "aws" (wie AWS die Verbindungsinformationen zur Verfügung stellt).

AWS SAM: Direkter Lambda-Handler aufrufen/vorlagenbasierter Lambda-Aufruf
Property (Eigenschaft) Description (Beschreibung)

type

Gibt an, welche Erweiterung die Startkonfiguration verwaltet. Immer auf aws-sam setzen, um die AWS SAM CLI lokal zu erstellen und zu debuggen.

name

Gibt einen leserfreundlichen Namen an, der in der Liste Konfiguration des Debuggen Startstarts angezeigt wird.

request

Gibt die Art der Konfiguration anvon der benannten Erweiterung ausgeführt werden (aws-sam). Immer auf direct-invoke gesetzt, um die Lambda-Funktion zu starten.

invokeTarget

Gibt den Eintrittspunkt für den Aufruf der Ressource an.

Um die Lambda Funktion direkt aufzurufen, legen Sie Werte für die folgendeninvokeTarget-Felder:

  • target— Stellen Sie aufcode.

  • lambdaHandler— Der Name des aufzurufenden Lambda -Funktionshandlers.

  • projectRoot— Der Pfad für die Anwendungsdatei, die Lambda-Funktions-Handler.

  • architecture— Prozessorarchitektur der emulierten Umgebung, in der Ihre lokale SAM-Lambda-Anwendung ausgeführt wird. Für bestimmte Laufzeiten können Sie wählenarm64anstelle der Standardeinstellungx86_64Architektur. Weitere Informationen finden Sie unter Eine neue serverlose Anwendung (lokal) erstellen.

Für den Aufruf der Lambda-Ressourcen mit demAWS SAM-Vorlage, Werte fürinvokeTarget-Felder:

  • target— Stellen Sie auftemplate.

  • templatePath— Der Pfad zumAWS SAM-Vorlagendatei.

  • logicalId— Der Ressourcenname des AWS::Lambda::Function oder AWS::Serverless::Function, der aufgerufen werden soll. Sie finden den Ressourcennamen im YAML-FormatAWS SAM-Vorlage. Beachten Sie,AWS Toolkiterkennt implizit Funktionen, die mit definiert sindPackageType: ImageimAWS SAM-Vorlage alsImage-basiertLambda-Funktionen. Weitere Informationen finden Sie unterLambda-BereitstellungspaketeimAWS LambdaEntwicklerhandbuch.

Lambda ("lambda") Eigenschaften
Property (Eigenschaft) Description (Beschreibung)

environmentVariables

Verwenden Sie, um Betriebsparameter an Ihre Lambda-Funktion weiterzu Wenn Sie z. B. Daten in einen Amazon-S3-Bucket schreiben, anstatt den Bucket-Namen, Bucket-Namen als Umgebungsvariable zu codieren, hartzucodieren, hartzucodieren, hartzucodieren, hartzucodieren,

Anmerkung

Wenn Sie Umgebungsvariablen für eine serverlose Anwendung angeben, müssen Sie Konfigurationen zu beidenAWS SAM-Vorlage (template.yaml) und daslaunch.jsonfile.

Beispiel für die Formatierung einer Umgebungsvariablen in derAWS SAM-Vorlage:

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

Beispiel für die Formatierung einer Umgebungsvariablen in derlaunch.jsonfile:

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

payload

Stellt zwei Optionen für die Ereignisnutzlast bereit, die Sie Ihrer Lambda -Funktion als Eingabe bereitstellen.

  • "json": JSON-formatierte Schlüssel-Wert-Paare, welche die Ereignisnutzlast definieren.

  • "path": Ein Pfad zu der Datei, die als Ereignisnutzlast verwendet wird.

memoryMB

Gibt Megabyte (MB) Speicher an, der für die Ausführung einer aufgerufenen Lambda-Funktion bereitgestellt wird.

runtime

Gibt die Laufzeitumgebung an, die Lambda-Funktion verwendet. Weitere Informationen finden Sie unter AWS Lambda-Laufzeiten.

timeoutSec

Legt die zulässige Zeit in Sekunden fest, bevor die Debug-Sitzung das Timeout überschreitet.

pathMappings

Gibt an, wo sich der lokale Code in Bezug auf die Ausführung im Container befindet.

Standardmäßig setzt das Toolkit for VS CodelocalRootzum Code-Root der Lambda-Funktion im lokalen Workspace undremoteRootzu/var/task, das Standard-Arbeitsverzeichnis für Code, der in Lambda ausgeführt wird. Wenn das Arbeitsverzeichnis in der Dockerfile geändert wird oder mit demWorkingDirectory-Parameter imAWS CloudFormation-Vorlagendatei, mindestens einepathMapping-Eintrag muss angegeben werden, damit der Debugger erfolgreich lokal gesetzte Breakpoints dem im Lambda-Container ausgeführten Code zuordnen kann.

Beispiel für Formatierung fürpathMappingsimlaunch.jsonfile:

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

Einschränkungen:

  • Für .NET-Image-basierte Lambda-Funktionen ist derremoteRoot-Eintrag muss das Build-Verzeichnis sein.

  • Für Node.js-basierte Lambda-Funktionen können Sie nur einen einzelnen Pfadzuordnungseintrag angeben.

Das Toolkit for VS Code verwendet denAWS SAMCLI zum Erstellen und Debuggen von serverless Anwendungen lokal. Sie können das Verhalten von AWS SAM CLI-Befehle, die Eigenschaften des "sam"-Konfiguration in der Datei launch.json konfigurieren.

AWS SAM CLI ("sam") Eigenschaften
Property (Eigenschaft) Description (Beschreibung) Standardwert

buildArguments

Konfiguriert, wie die sam build Ihren Lambda-Quellcode erstellt. Informationen zu Buildoptionen finden Sie unter sam build im AWS Serverless Application Model Entwicklerhandbuch.

Leere Zeichenfolge

containerBuild

Gibt an, ob Ihre Funktion innerhalb eines Lambda-ähnlichen Docker-Containers entwickelt wird.

false

dockerNetwork

Der Name oder die ID eines vorhandenen Docker-Netzwerks, mit dem Lambda Docker-Container eine Verbindung herstellen sollen, mit dem Standard-Bridge-Netzwerk. Bei fehlender Angabe stellen die Lambda-Container nur eine Verbindung mit dem Standard-Bridge-Docker-Netzwerk her.

Leere Zeichenfolge

localArguments

Gibt zusätzliche lokale Aufruf-Argumente an.

Leere Zeichenfolge

skipNewImageCheck

Gibt an, ob der Befehl das Herunterladen des neuesten Docker-Images für die Lambda -Laufzeitumgebung überspringen soll.

false

template

PasstAWS SAM-Vorlage, die Parameter zur Eingabe von Kundenwerten verwendet. Weitere Informationen finden Sie unter Parameter im AWS CloudFormation-Benutzerhandbuch.

"parameters":{}

AWS-Verbindungseigenschaften ("aws")
Property (Eigenschaft) Description (Beschreibung) Standardwert

credentials

Wählt ein bestimmtes Profil aus (z. B.profile:default) aus Ihrer Anmeldeinformationsdatei, um AWS-Anmeldeinformationen zu erhalten.

DieAWSAnmeldeinformationen, die Ihre vorhandenengeteiltAWSKonfigurationsdatei oder freigegebeneAWSTools ebenfalls unterstütztstellen Sie im Toolkit for VS Code bereit.

region

Legt die AWS-Region des Services fest (z. B. us-east-1).

Die AWS-Region, die dem Profil der aktiven Anmeldeinformationen zugeordnet ist.

Beispiel: Konfiguration des Vorlagenstarts

Im Folgenden finden Sie ein Beispiel für Startkonfigurationsdatei fürAWS SAM-VorlagenZiel:

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

Beispiel: Startkonfiguration

Hier ist ein Beispiel für eine Startkonfigurationsdatei für ein Lambda-Funktionsziel:

{ "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": {} } } ] }