Remote-Debugging von Lambda-Funktionen mit Visual Studio Code
Mit dem Remote-Debugging-Feature im AWS Toolkit for Visual Studio Code
Mit Remote-Debugging können Sie:
-
Haltepunkte in Ihrem Lambda-Funktionscode setzen.
-
Die Codeausführung in Echtzeit durchlaufen.
-
Variablen und Status während der Laufzeit überprüfen.
-
Lambda-Funktionen debuggen, die in AWS bereitgestellt wurden, einschließlich solcher in VPCs oder mit bestimmten IAM-Berechtigungen.
Unterstützte Laufzeiten
Remote-Debugging wird für die folgenden Laufzeiten unterstützt:
-
Python (AL2023)
-
Java
-
JavaScript/Node.js (AL2023)
Anmerkung
Remote-Debugging wird sowohl für x86_64- als auch für arm64-Architekturen unterstützt.
Sicherheit und Remote-Debugging
Das Remote-Debugging erfolgt innerhalb der bestehenden Lambda-Sicherheitsgrenzen. Benutzer können mithilfe der Berechtigung UpdateFunctionConfiguration, die bereits Zugriff auf Funktionsumgebungsvariablen und -konfigurationen ermöglicht, Ebenen an eine Funktion anhängen. Das Remote-Debugging geht nicht über diese bestehenden Berechtigungen hinaus. Stattdessen werden zusätzliche Sicherheitskontrollen durch sicheres Tunneling und automatische Sitzungsverwaltung hinzugefügt. Darüber hinaus ist das Remote-Debugging ein vollständig vom Kunden kontrolliertes Feature, das explizite Berechtigungen und Aktionen erfordert:
-
Erstellung eines sicheren IoT-Tunnels: Das AWS-Toolkit muss einen sicheren IoT-Tunnel erstellen, was nur mit der ausdrücklichen Berechtigung des Benutzers über
iot:OpenTunnelmöglich ist. -
Anhängen der Debugging-Ebene und Tokenverwaltung: Der Debugging-Prozess gewährleistet die Sicherheit durch folgende Kontrollen:
Die Debugging-Ebene muss an die Lambda-Funktion angehängt werden, wofür die folgenden Berechtigungen erforderlich sind:
lambda:UpdateFunctionConfigurationundlambda:GetLayerVersion.
Ein Sicherheitstoken (generiert über
iot:OpenTunnel) muss vor jeder Debugging-Sitzung in der Funktionsumgebungsvariablen aktualisiert werden, was ebenfallslambda:UpdateFunctionConfigurationerfordert.
Aus Sicherheitsgründen wird dieses Token automatisch rotiert und die Debug-Ebene wird am Ende jeder Debugging-Sitzung automatisch entfernt und kann nicht wiederverwendet werden.
Anmerkung
Remote-Debugging wird sowohl für x86_64- als auch für arm64-Architekturen unterstützt.
Voraussetzungen
Bevor Sie mit dem Remote-Debugging beginnen, stellen Sie sicher, dass Sie über Folgendes verfügen:
-
Eine Lambda-Funktion, die für Ihr AWS-Konto bereitgestellt wurde.
-
AWS Toolkit for Visual Studio Code. Installationsanweisungen finden Sie unter Einrichten des AWS Toolkit for Visual Studio Code.
-
Die Version des AWS-Toolkits, die Sie installiert haben, ist mindestens 3.69.0.
-
AWS-Anmeldeinformationen, die in AWS Toolkit for Visual Studio Code konfiguriert sind. Weitere Informationen finden Sie unter Authentifizierung und Zugriffskontrolle.
Remote-Debugging von Lambda-Funktionen
Führen Sie die folgenden Schritte aus, um eine Remote-Debugging-Sitzung zu starten:
-
Öffnen Sie den AWS Explorer in VS Code, indem Sie das AWS-Symbol in der linken Seitenleiste auswählen.
-
Erweitern Sie den Abschnitt „Lambda“, um Ihre Funktionen anzuzeigen.
-
Klicken Sie mit der rechten Maustaste auf die Funktion, die Sie debuggen möchten.
-
Wählen Sie im Kontextmenü die Option Remote aufrufen aus.
-
Aktivieren Sie im sich öffnenden Aufruffenster das Kontrollkästchen Debugging aktivieren.
-
Klicken Sie auf Aufrufen, um die Remote-Debugging-Sitzung zu starten.
Anmerkung
Lambda-Funktionen haben ein kombiniertes Limit von 250 MB für Funktionscode und alle angehängten Ebenen. Die Remote-Debugging-Ebene erhöht die Größe Ihrer Funktion um ca. 40 MB.
Eine Remote-Debugging-Sitzung endet, wenn Sie:
-
auf dem Bildschirm mit der Remoteaufruf-Konfiguration“ die Option Debug-Setup entfernen auswählen
-
in den Debugging-Steuerelementen von VS Code das Symbol „Trennen“ auswählen
-
die Handler-Datei im VS-Code-Editor auswählen.
Anmerkung
Die Debugging-Ebene wird automatisch entfernt, wenn nach Ihrem letzten Aufruf 60 Sekunden lang keine Aktivität stattfindet.
Deaktivieren von Remote-Debugging
Es gibt drei Möglichkeiten, dieses Feature zu deaktivieren:
-
Funktionsupdates verweigern:
lambda:UpdateFunctionConfigurationaufdenysetzen -
IoT-Berechtigungen einschränken: IoT-bezogene Berechtigungen verweigern
-
Debug-Ebenen blockieren:
lambda:GetLayerVersionfür die folgenden ARNs verweigern:arn:aws:lambda:*:*:layer:LDKLayerX86:*
arn:aws:lambda:*:*:layer:LDKLayerArm64:*
Anmerkung
Durch Deaktivieren dieses Features wird verhindert, dass die Debugging-Ebene während der Aktualisierung der Funktionskonfiguration hinzugefügt wird.
Zusätzliche Informationen
Weitere Informationen zur Verwendung von Lambda in VS Code finden Sie unter Lokale Entwicklung von Lambda-Funktionen mit VS Code.
Ausführliche Anweisungen zur Fehlerbehebung, zu erweiterten Anwendungsfällen und zur regionalen Verfügbarkeit finden Sie unter Remote-Debuggen von Lambda-Funktionen im AWS Toolkit for Visual Studio Code-Benutzerhandbuch.