Remote-Debugging von Lambda-Funktionen mit Visual Studio Code - AWS Lambda

Remote-Debugging von Lambda-Funktionen mit Visual Studio Code

Mit dem Remote-Debugging-Feature im AWS Toolkit for Visual Studio Code können Sie Ihre Lambda-Funktionen debuggen, die direkt in der AWS-Cloud ausgeführt werden. Dies ist nützlich, wenn Sie Probleme untersuchen, die lokal schwer zu reproduzieren sind oder nur anhand von Protokollen diagnostiziert werden können.

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:OpenTunnel mö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:UpdateFunctionConfiguration und lambda:GetLayerVersion.

    • Ein Sicherheitstoken (generiert über iot:OpenTunnel) muss vor jeder Debugging-Sitzung in der Funktionsumgebungsvariablen aktualisiert werden, was ebenfalls lambda:UpdateFunctionConfiguration erfordert.

    • 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:

  1. Eine Lambda-Funktion, die für Ihr AWS-Konto bereitgestellt wurde.

  2. AWS Toolkit for Visual Studio Code. Installationsanweisungen finden Sie unter Einrichten des AWS Toolkit for Visual Studio Code.

  3. Die Version des AWS-Toolkits, die Sie installiert haben, ist mindestens 3.69.0.

  4. 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:

  1. Öffnen Sie den AWS Explorer in VS Code, indem Sie das AWS-Symbol in der linken Seitenleiste auswählen.

  2. Erweitern Sie den Abschnitt „Lambda“, um Ihre Funktionen anzuzeigen.

  3. Klicken Sie mit der rechten Maustaste auf die Funktion, die Sie debuggen möchten.

  4. Wählen Sie im Kontextmenü die Option Remote aufrufen aus.

  5. Aktivieren Sie im sich öffnenden Aufruffenster das Kontrollkästchen Debugging aktivieren.

  6. 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:UpdateFunctionConfiguration auf deny setzen

  • IoT-Berechtigungen einschränken: IoT-bezogene Berechtigungen verweigern

  • Debug-Ebenen blockieren: lambda:GetLayerVersion fü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.

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.