Behandlung von Fehlerbedingungen mithilfe einer Step Functions Functions-Zustandsmaschine - AWS Step Functions

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.

Behandlung von Fehlerbedingungen mithilfe einer Step Functions Functions-Zustandsmaschine

In diesem Tutorial erstellen Sie eine AWS Step Functions Zustandsmaschine mit einem Fallback-Staaten Feld. Das Catch Feld verwendet ein AWS Lambda Funktion, um mit bedingter Logik zu antworten, die auf dem Typ der Fehlermeldung basiert. Diese Technik wird als Funktionsfehlerbehandlung bezeichnet.

Weitere Informationen finden Sie unter AWS Lambda Funktionsfehler in Node.js in der AWS Lambda Leitfaden für Entwickler.

Anmerkung

Sie können auch Zustandsmaschinen erstellen, die es bei Timeouts erneut versuchen, oder solche, die bei Catch Auftreten eines Fehlers oder Timeouts in einen bestimmten Zustand übergehen. Beispiele für diese Fehlerbehandlungstechniken finden Sie unter Beispiele für die Verwendung von Retry und von Catch.

Schritt 1: Erstellen Sie eine Lambda-Funktion, die fehlschlägt

Verwenden Sie eine Lambda-Funktion, um eine Fehlerbedingung zu simulieren.

Wichtig

Stellen Sie sicher, dass Ihre Lambda-Funktion unter derselben steht AWS Konto und AWS-Region als deine Staatsmaschine.

  1. Öffnen Sie AWS Lambda Konsole bei https://console.aws.amazon.com/lambda/.

  2. Wählen Sie Funktion erstellen aus.

  3. Wählen Sie Blueprint verwenden aus, geben Sie den step-functions Text in das Suchfeld ein, und wählen Sie dann den Blueprint Einen benutzerdefinierten Fehler auslösen aus.

  4. Geben Sie für Function name (Funktionsname) FailFunction ein.

  5. Behalten Sie für Rolle die Standardauswahl bei (Neue Rolle mit grundlegenden Lambda-Berechtigungen erstellen).

  6. Der folgende Code wird im Codebereich der Lambda-Funktion angezeigt.

    exports.handler = async (event, context) => { function CustomError(message) { this.name = 'CustomError'; this.message = message; } CustomError.prototype = new Error(); throw new CustomError('This is a custom error!'); };

    Das context-Objekt gibt die Fehlermeldung This is a custom error! zurück.

  7. Wählen Sie Funktion erstellen aus.

  8. Nachdem Ihre Lambda-Funktion erstellt wurde, kopieren Sie den Amazon-Ressourcennamen (ARN) der Funktion, der in der oberen rechten Ecke der Seite angezeigt wird. Das Folgende ist ein Beispiel: ARN

    arn:aws:lambda:us-east-1:123456789012:function:FailFunction
  9. Wählen Sie Bereitstellen.

Schritt 2: Testen Sie die Lambda-Funktion

Testen Sie Ihre Lambda-Funktion, um zu sehen, wie sie funktioniert.

  1. Wählen Sie auf der FailFunctionSeite die Registerkarte Test und dann Test aus. Sie müssen kein Testereignis erstellen.

  2. Um die Testergebnisse (den simulierten Fehler) zu überprüfen, erweitern Sie unter Ausführungsergebnis die Option Details.

Schritt 3: Erstellen Sie eine Zustandsmaschine mit einem Catch-Feld

Verwenden Sie die Step Functions Functions-Konsole, um eine Zustandsmaschine zu erstellen, die einen Workflow-Status der Aufgabe Status mit einem Catch Feld verwendet. Fügen Sie im Task-Status einen Verweis auf Ihre Lambda-Funktion hinzu. Die Zustandsmaschine ruft die Lambda-Funktion auf, die während der Ausführung fehlschlägt. Step Functions wiederholt die Funktion zweimal, wobei ein exponentieller Backoff zwischen den Wiederholungen verwendet wird.

  1. Öffnen Sie die Step Functions Functions-Konsole und wählen Sie Create State Machine.

  2. Wählen Sie im Dialogfeld Vorlage auswählen die Option Leer aus.

  3. Wählen Sie „Auswählen“, um Workflow Studio in zu öffnenEntwurfsmodus.

  4. Wählen Sie Code, um den Code-Editor zu öffnen. Im Code-Editor schreiben und bearbeiten Sie die Amazon States Language (ASL) -Definition Ihrer Workflows.

  5. Fügen Sie den folgenden Code ein, ersetzen Sie jedoch ARN die Lambda-Funktion, die Sie zuvor in dem Resource Feld erstellt haben.

    { "Comment": "A Catch example of the Amazon States Language using an AWS Lambda function", "StartAt": "CreateAccount", "States": { "CreateAccount": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:FailFunction", "Catch": [ { "ErrorEquals": ["CustomError"], "Next": "CustomErrorFallback" }, { "ErrorEquals": ["States.TaskFailed"], "Next": "ReservedTypeFallback" }, { "ErrorEquals": ["States.ALL"], "Next": "CatchAllFallback" } ], "End": true }, "CustomErrorFallback": { "Type": "Pass", "Result": "This is a fallback from a custom Lambda function exception", "End": true }, "ReservedTypeFallback": { "Type": "Pass", "Result": "This is a fallback from a reserved error code", "End": true }, "CatchAllFallback": { "Type": "Pass", "Result": "This is a fallback from any error code", "End": true } } }

    Dies ist eine Beschreibung Ihrer Zustandsmaschine in der Sprache Amazon States. Sie definiert einen einzelnen Task-Zustand namens CreateAccount. Weitere Informationen finden Sie unter State Machine Structure.

    Weitere Informationen zur Syntax des Retry-Feldes finden Sie unter Beispiele für Zustandsmaschinen mit Retry und Catch.

    Anmerkung

    Unbehandelte Fehler in Lambda werden wie Lambda.Unknown in der Fehlerausgabe gemeldet. Dazu gehören out-of-memory Fehler und Funktions-Timeouts. Sie können nach, oder abgleichen Lambda.UnknownStates.ALL, States.TaskFailed um diese Fehler zu behandeln. Wenn Lambda die maximale Anzahl von Aufrufen erreicht, lautet der Fehler. Lambda.TooManyRequestsException Weitere Informationen zu Lambda Handled und Unhandled Fehlern finden Sie FunctionError in der AWS Lambda Leitfaden für Entwickler.

  6. (Optional) Sehen Sie Diagrammvisualisierung sich im die grafische Echtzeitvisualisierung Ihres Workflows an.

  7. Geben Sie einen Namen für Ihre Zustandsmaschine an. Wählen Sie dazu das Bearbeitungssymbol neben dem Standardnamen der Zustandsmaschine von MyStateMachine. Geben Sie dann unter State Machine Configuration einen Namen in das Feld State Machine Name ein.

    Geben Sie für dieses Tutorial Catchfailure ein.

  8. (Optional) Geben Sie unter State-Machine-Konfiguration weitere Workflow-Einstellungen an, z. B. den Zustandsmaschinentyp und seine Ausführungsrolle.

    Behalten Sie für dieses Tutorial alle Standardauswahlen in den State-Machine-Einstellungen bei.

  9. Wählen Sie im Dialogfeld „Rollenerstellung bestätigen“ die Option „Bestätigen“, um fortzufahren.

    Sie können auch Rolleneinstellungen anzeigen wählen, um zur State-Machine-Konfiguration zurückzukehren.

    Anmerkung

    Wenn Sie die von Step Functions erstellte IAM Rolle löschen, kann Step Functions sie später nicht mehr neu erstellen. Ebenso kann Step Functions ihre ursprünglichen Einstellungen später nicht wiederherstellen, wenn Sie die Rolle ändern (z. B. indem Sie Step Functions aus den Prinzipalen in der IAM Richtlinie entfernen).

Schritt 4: Führen Sie die Zustandsmaschine aus

Nachdem Sie Ihren Zustandsmaschine erstellt haben, können Sie ihn ausführen.

  1. Wählen Sie auf der Seite State Machines die Option Catchfailure aus.

  2. Wählen Sie auf der Seite Catchfailure die Option Ausführung starten aus. Das Dialogfeld Ausführung starten wird angezeigt.

  3. Gehen Sie im Dialogfeld Ausführung starten wie folgt vor:

    1. (Optional) Geben Sie einen benutzerdefinierten Ausführungsnamen ein, um den generierten Standard zu überschreiben.

      ASCIINichtnamen und Protokollierung

      Step Functions akzeptiert Namen für Zustandsmaschinen, Ausführungen, Aktivitäten und Bezeichnungen, die ASCII Nichtzeichen enthalten. Da solche Zeichen nicht mit Amazon funktionieren, empfehlen wir CloudWatch, nur ASCII Zeichen zu verwenden, damit Sie die Messwerte verfolgen können CloudWatch.

    2. (Optional) Geben Sie im Eingabefeld Eingabewerte im JSON Format ein, um Ihren Workflow auszuführen.

    3. Wählen Sie Start execution (Ausführung starten) aus.

    4. Die Step Functions Functions-Konsole leitet Sie zu einer Seite weiter, die mit Ihrer Ausführungs-ID betitelt ist. Diese Seite wird als Seite mit den Ausführungsdetails bezeichnet. Auf dieser Seite können Sie die Ausführungsergebnisse im Verlauf oder nach Abschluss der Ausführung überprüfen.

      Um die Ausführungsergebnisse zu überprüfen, wählen Sie in der Diagrammansicht einzelne Status und dann die einzelnen Registerkarten im Einzelheiten zu den Schritten Bereich aus, um die Details der einzelnen Status, einschließlich Eingabe, Ausgabe und Definition, anzuzeigen. Einzelheiten zu den Ausführungsinformationen, die Sie auf der Seite mit den Ausführungsdetails einsehen können, finden Sie unterÜberblick über die Ausführungsdetails.

    Um beispielsweise Ihre benutzerdefinierte Fehlermeldung anzuzeigen, wählen Sie den CreateAccountSchritt in der Diagrammansicht und dann die Registerkarte Ausgabe aus.

    Illustrativer Screenshot der Ausgabe mit einer Fehlermeldung aus der Ausführung.
    Anmerkung

    Sie können die Statuseingabe mit dem Fehler beibehalten, indem Sie ResultPath verwenden. Siehe Wird verwendet ResultPath , um sowohl Fehler als auch Eingaben in eine Catch.