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.
Fehler in der Step Functions Functions-Konsole debuggen
Im vorherigen Thema haben Sie Eingabe und Ausgabe konfigurieren sich mit dem Filtern und Bearbeiten von Daten befasst. Bei der Konfiguration Ihrer Zustandsmaschine und der Datenauswahl können Fehler auftreten. In diesem letzten Thema erhalten Sie eine Einführung in das Debuggen von Laufzeitfehlern mithilfe der Step Functions Functions-Konsole.
Möglicherweise treten Laufzeitfehler auf, wie z. B.:
Ein ungültiger JSON Pfad für
Variable
Feld imChoice
Bundesstaat.Problem mit der Definition eines Zustandsmaschinen, z. B. wurde keine passende Regel für einen
Choice
Status definiert.Ungültige JSON Pfadausdrücke beim Anwenden von Filtern zur Manipulation von Eingabe und Ausgabe.
Taskfehler aufgrund einer Lambda-Funktionsausnahme.
IAMBerechtigungsfehler.
Tipp
Weitere Optionen zur Fehlerbehandlung finden Sie unterUmgang mit Fehlern in Step Functions Functions-Workflows.
Debuggen des Fehlers mit ungültigem Pfadauswahlstatus
Wenn Sie im Variablenfeld des Status einen falschen oder nicht auflösbaren JSON Pfad angeben oder im Choice
Status keine passende Regel definieren, erhalten Sie beim Ausführen Ihres Workflows eine Fehlermeldung. Choice
Um den Fehler mit dem ungültigen Pfad zu veranschaulichen, wird in diesem Tutorial ein Choice
Statusfehler in Ihrem Workflow vorgestellt. Sie verwenden die CreditCardWorkflowZustandsmaschine und bearbeiten ihre Definition, um den Fehler einzuleiten.
Öffnen Sie die Step Functions Functions-Konsole und wählen Sie dann die CreditCardWorkflowZustandsmaschine aus.
Wählen Sie Bearbeiten, um die State-Machine-Definition zu bearbeiten. Nehmen Sie die im folgenden Code hervorgehobene Änderung an Ihrer State-Machine-Definition vor.
{ "Comment": "A description of my state machine", "StartAt": "Get credit limit", "States": { "Get credit limit": { ... ... }, "Credit applied >= 5000?": { "Type": "Choice", "Choices": [ { "Variable": "$.Payload", "NumericLessThan": 5000, "Next": "Auto-approve limit" }, { "Variable": "$.Payload", "NumericGreaterThanEquals": 5000, "Next": "Wait for human approval" } ], "Default": "Wait for human approval" }, ... ... } }
Wählen Sie Speichern und dann trotzdem Speichern.
Führen Sie die Zustandsmaschine aus.
Führen Sie auf der Seite mit den Ausführungsdetails Ihrer State-Machine-Ausführung einen der folgenden Schritte aus:
Wählen Sie in der Fehlermeldung die Option Ursache aus, um den Grund für den Fehler bei der Ausführung anzuzeigen.
Wählen Sie in der Fehlermeldung „Schrittdetails anzeigen“, um den Schritt anzuzeigen, der den Fehler verursacht hat.
Wählen Sie auf der Registerkarte Eingabe und Ausgabe im Abschnitt Schrittdetails die Umschaltfläche Erweiterte Ansicht, um den Eingabe- und Ausgabedatenübertragungspfad für einen ausgewählten Status anzuzeigen.
Stellen Sie in der Diagrammansicht sicher, dass das zugewiesene Guthaben >= 5000? ist ausgewählt und gehen Sie wie folgt vor:
Zeigen Sie den Eingabewert des Bundesstaates im Eingabefeld an.
Wählen Sie die Registerkarte Definition und achten Sie auf den JSON Pfad, der für das Variablenfeld angegeben wurde.
Der Eingabewert für das zugewiesene Guthaben >= 5000? state ist ein numerischer Wert, obwohl Sie den JSON Pfad für den Eingabewert als
$.Payload
angegeben haben. Während der Ausführung der Zustandsmaschine kann derChoice
Status diesen JSON Pfad nicht auflösen, da er nicht existiert.
Bearbeiten Sie die Zustandsmaschine, um den Wert des Variablenfeldes als anzugeben
$
.{ "Comment": "A description of my state machine", "StartAt": "Get credit limit", "States": { "Get credit limit": { ... ... }, "Credit applied >= 5000?": { "Type": "Choice", "Choices": [ { "Variable": "$", "NumericLessThan": 5000, "Next": "Auto-approve limit" }, { "Variable": "$", "NumericGreaterThanEquals": 5000, "Next": "Wait for human approval" } ], "Default": "Wait for human approval" }, ... ... } }
Debuggen von JSON Pfadausdrucksfehlern beim Anwenden von Eingabe- und Ausgabefiltern
Bei der Arbeit mit den Eingabe- und Ausgabefiltern können Laufzeitfehler auftreten, die auf die Angabe ungültiger JSON Pfadausdrücke zurückzuführen sind.
Im folgenden Beispiel wird der WorkflowInputOutputZustandsmaschine verwendet, den Sie in Tutorial 5 erstellt haben, und es wird ein Szenario veranschaulicht, in dem Sie den ResultSelector
Filter verwenden, um Teile der Aufgabenausgabe auszuwählen.
Wenden Sie den
ResultSelector
Filter an, um einen Teil der Aufgabenausgabe für den Schritt Identität überprüfen auszuwählen. Bearbeiten Sie dazu Ihre State-Machine-Definition wie folgt:{ "StartAt": "Verify identity", "States": { "Verify identity": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "Parameters": { "FunctionName": "arn:aws:lambda:us-east-2:123456789012:function:
check-identity
", "Payload": { "email": "jdoe@example.com", "ssn": "123-45-6789" } }, ... ... "ResultSelector": { "identity.$": "$.Payload.body.message" }", "End": true } } }Führen Sie die Zustandsmaschine aus.
Gehen Sie auf der Seite mit den Ausführungsdetails Ihrer State-Machine-Ausführung wie folgt vor:
Wählen Sie in der Fehlermeldung die Option Ursache aus, um den Grund für den Fehler bei der Ausführung anzuzeigen.
Wählen Sie in der Fehlermeldung „Schrittdetails anzeigen“, um den Schritt anzuzeigen, der den Fehler verursacht hat.
Beachten Sie in der Fehlermeldung, dass der Inhalt des $.payload.Body-Knotens eine maskierte Zeichenfolge ist. JSON Der Fehler ist aufgetreten, weil Sie mit der Pfadnotation nicht auf eine Zeichenfolge verweisen können. JSON
Gehen Sie wie folgt vor, um auf den Knoten $.payload.body.Message zu verweisen:
Verwenden Sie die
States.StringToJSON
systeminterne Funktion, um die Zeichenfolge zunächst in ein Format zu konvertieren. JSONGeben Sie den JSON Pfad für den $.payload.body.Message-Knoten innerhalb der systeminternen Funktion an.
"ResultSelector": { "identity.$":"States.StringToJson($.Payload.body.message)" }
Führen Sie die Zustandsmaschine erneut aus.
Schlussfolgerung und nächste Schritte
Herzlichen Glückwunsch! Sie haben das Ende von Erste Schritte-Tutorial Step Functions erreicht.
Bereinigen
Nachdem Sie die ersten Schritte abgeschlossen haben, empfiehlt es sich, alle Ressourcen, die Sie nicht mehr verwenden möchten, zu bereinigen (zu löschen). Durch das Bereinigen von AWS Ressourcen wird verhindert, dass für Ihr Konto weitere Gebühren anfallen.