Testen und Debuggen langlebiger Funktionen - AWS Serverless Application Model

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.

Testen und Debuggen langlebiger Funktionen

Das lokale Testen und Debuggen langlebiger Funktionen funktioniert ähnlich wie reguläre Lambda-Funktionen, mit automatischer Unterstützung für Checkpointing und Replay. Dieses Handbuch behandelt gängige Testszenarien und Techniken zur Fehlerbehebung.

Lokaler Test-Workflow

Wenn langlebige Funktionen lokal getestet werden, unterscheidet sich der Workflow von regulären Lambda-Funktionen:

Arbeitsablauf beim Testen dauerhafter Funktionen
  1. Erstellen Sie Ihre Anwendung:

    $ sam build
  2. Rufen Sie Ihre dauerhafte Funktion auf:

    $ sam local invoke MyDurableFunction --durable-execution-name test
  3. Überprüfen Sie bei Bedarf den Ausführungsverlauf:

    $ sam local execution history execution-id

Allgemeine Testszenarien

Testen des Checkpointing-Verhaltens

Um zu testen, ob Ihre Funktion ordnungsgemäß funktioniert, gehen Sie wie folgt vor:

# Example Python durable function def handler(event, context): # This will create a checkpoint context.wait(10) # Wait 10 seconds # Function resumes here after wait return {"message": "Function resumed after wait"}

Wenn Sie diese Funktion lokal aufrufen, wird die Wartezeit automatisch behandelt.

Callback-Szenarien testen

Für Funktionen, die auf externe Rückrufe warten:

  1. Starten Sie Ihre dauerhafte Funktion, die auf einen Rückruf wartet

  2. Löse den Rückruf in einem anderen Terminal auf:

    $ sam local callback succeed callback-id
  3. Beobachten Sie, wie die Funktion die Ausführung fortsetzt

Fehlerbehebung

Dauerhafte Funktion wird nicht ordnungsgemäß ausgeführt

Problem: Die Funktion verhält sich nicht wie eine dauerhafte Funktion.

Lösungen:

  • Vergewissern Sie DurableConfig sich, dass dies in Ihrer SAM-Vorlage festgelegt ist

  • Stellen Sie sicher, dass Ihr Funktionscode SDK-Methoden für dauerhafte Funktionen verwendet context.wait() (z. B.

  • Überprüfe, ob du eine unterstützte Runtime (TypeScript, JavaScript, Python) verwendest

Der Ausführungsverlauf kann nicht abgerufen werden

Problem: Der local execution history Befehl gibt keine Ergebnisse zurück.

Lösungen:

  • Stellen Sie sicher, dass die Ausführungs-ID korrekt ist

  • Vergewissern Sie sich, dass die Funktion mindestens einmal aufgerufen wurde

Callback-Befehle funktionieren nicht

Problem: Callback-Befehle lösen ausstehende Operationen nicht auf.

Lösungen:

  • Stellen Sie sicher, dass die Rückruf-ID korrekt ist

  • Stellen Sie sicher, dass die Funktion tatsächlich auf einen Rückruf wartet

  • Stellen Sie sicher, dass Sie die richtige Callback-Befehlssyntax verwenden

Tipps zum Debuggen

  • Ausführungshistorie verwenden — Sehen Sie sich den Ausführungsverlauf an, um den Ablauf Ihrer dauerhaften Funktion nachzuvollziehen

  • Testen Sie inkrementell — Beginnen Sie mit einfachen Warteoperationen, bevor Sie komplexe Logik hinzufügen

  • Ausführliche Protokollierung verwenden — Aktivieren Sie die detaillierte Protokollierung, um den Ausführungsablauf nachzuverfolgen

Weitere Informationen

Weitere Informationen zum Testen und Debuggen finden Sie unter: