

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 in einer Step Functions Functions-Zustandsmaschine
<a name="tutorial-handling-error-conditions"></a>

In diesem Tutorial erstellen Sie eine AWS Step Functions Zustandsmaschine mit einem **Task-Status**, der eine Lambda-Beispielfunktion aufruft, die erstellt wurde, um einen benutzerdefinierten Fehler auszulösen.

Aufgaben gehören zu den Aufgaben[Fallback-Zustände](concepts-error-handling.md#error-handling-fallback-states), für die Sie ein `Catch` Feld konfigurieren können. Wenn bei der Integration Fehler eingehen, werden die nächsten Schritte anhand des Fehlernamens vom Catch-Feld ausgewählt.

## Schritt 1: Erstellen Sie eine Lambda-Funktion, die einen Fehler auslöst
<a name="create-lambda-function-fail"></a>

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

1. Öffnen Sie die AWS Lambda Konsole unter. [https://console.aws.amazon.com/lambda/](https://console.aws.amazon.com/lambda/)

1. Wählen Sie **Funktion erstellen**.

1. Wählen Sie „**Blueprint verwenden“, suchen `Step Functions` Sie nach einem** benutzerdefinierten Fehler und wählen Sie „**Einen benutzerdefinierten Fehler auslösen**“ aus.

1. Geben Sie für **Function name** (Funktionsname) `ThrowErrorFunction` ein.

1. Wählen Sie unter **Role (Rolle)** die Option **Create a new role with basic Lambda permissions (Eine neue Rolle mit den grundlegenden Lambda-Berechtigungen erstellen)** aus.

1. Wählen Sie **Funktion erstellen**.

   Der folgende Code sollte im **Codebereich** angezeigt werden.

   ```
   export const handler = async () => {
       function CustomError(message) {
           this.name = 'CustomError';
           this.message = message;
       }
       CustomError.prototype = new Error();
   
       throw new CustomError('This is a custom error!');
   };
   ```

## Schritt 2: Testen Sie Ihre Lambda-Funktion
<a name="error-conditions-test"></a>

Bevor Sie eine Zustandsmaschine erstellen, überprüfen Sie, ob Ihre Lambda-Funktion `CustomError` beim Aufruf Ihre auslöst.

1. Wählen Sie die Registerkarte **Test**.

1. **Wählen Sie **Neues Ereignis erstellen und behalten Sie die Standard-Event-JSON** bei**

1. Wählen Sie **Test**, um Ihre Funktion mit Ihrem Testereignis aufzurufen.

1. Erweitern Sie **Funktion ausführen**, um die Details des ausgelösten Fehlers zu überprüfen.

Sie haben jetzt eine Lambda-Funktion, die bereit ist, einen benutzerdefinierten Fehler auszulösen.

Im nächsten Schritt richten Sie eine Zustandsmaschine ein, um diesen Fehler abzufangen und erneut zu versuchen.

## Schritt 3: Erstellen Sie Ihre Zustandsmaschine
<a name="state-machine-create-step"></a>

Verwenden Sie die Step Functions Functions-Konsole, um eine Zustandsmaschine zu erstellen, die eine [Workflow-Status der Aufgabe](state-task.md) mit einer `Catch` Konfiguration verwendet. Die Zustandsmaschine ruft die Lambda-Funktion auf, die Sie erstellt haben, um zu simulieren, dass beim Aufrufen der Funktion ein Fehler ausgelöst wird. Step Functions versucht die Funktion erneut, wobei ein exponentieller Backoff zwischen den Wiederholungen verwendet wird.

1. Öffnen Sie die [Step Functions Functions-Konsole](https://console.aws.amazon.com/states/home), wählen Sie im Menü **State Machines** und dann **Create State Machine** aus.

1. Wählen Sie **Create from blank aus** und geben Sie als **State Machine Name** den Text ein*CatchErrorStateMachine*.

1. Akzeptieren Sie den Standardtyp (Standard) und wählen Sie dann **Weiter**, um Ihren Zustandsmaschine in Workflow Studio zu bearbeiten.

1. Wählen Sie **Code**, um zum ASL-Editor zu wechseln, und ersetzen Sie dann den Code durch die folgende State-Machine-Definition:

   ```
   {
     "Comment": "Example state machine that can catch a custom error thrown by a function integration.",
     "StartAt": "CreateAccount",
     "States": {
       "CreateAccount": {
         "Type": "Task",
         "Resource": "arn:aws:states:::lambda:invoke",
         "Output": "{% $states.result.Payload %}",
         "Arguments": {
           "FunctionName": "arn:aws:lambda:region:account-id:function:ThrowErrorFunction:$LATEST",
           "Payload": "{% $states.input %}"
         },
         "Catch": [
           {
             "ErrorEquals": [
               "CustomError"
             ],
             "Next": "CustomErrorFallback"
           },
           {
             "ErrorEquals": [
               "States.ALL"
             ],
             "Next": "CatchAllFallback"
           }
         ],
         "End": true,
         "Retry": [
           {
             "ErrorEquals": [
               "CustomError",
               "Lambda.ServiceException",
               "Lambda.AWSLambdaException",
               "Lambda.SdkClientException",
               "Lambda.TooManyRequestsException"
             ],
             "IntervalSeconds": 1,
             "MaxAttempts": 3,
             "BackoffRate": 2,
             "JitterStrategy": "FULL"
           }
         ]
       },
       "CustomErrorFallback": {
         "Type": "Pass",
         "End": true,
         "Output": {
           "Result": "Fallback from a custom error function."
         }
       },
       "CatchAllFallback": {
         "Type": "Pass",
         "End": true,
         "Output": {
           "Result": "Fallback from all other error codes."
         }
       }
     },
     "QueryLanguage": "JSONata"
   }
   ```

## Schritt 4: Konfigurieren Sie Ihre Zustandsmaschine
<a name="state-machine-configure"></a>

Bevor Sie Ihre Zustandsmaschine ausführen, müssen Sie zunächst eine Verbindung zu der Lambda-Funktion herstellen, die Sie zuvor erstellt haben.

1. Wechseln Sie zurück in den **Entwurfsmodus** und wählen Sie den genannten Aufgabenstatus **Lambda: Invoke** aus. **CreateAccount** 

1. Suchen Sie auf der Registerkarte **Konfiguration** nach **API-Argumenten**. Wählen Sie als **Funktionsname** die Lambda-Funktion aus, die Sie zuvor erstellt haben.

1. Wählen Sie „**Erstellen**“, überprüfen Sie die Rollen und wählen Sie dann „**Bestätigen**“, um Ihre Zustandsmaschine zu erstellen.

## Schritt 5: Führen Sie die Zustandsmaschine aus
<a name="error-conditions-execution"></a>

Nachdem Sie Ihren Zustandsmaschine erstellt und konfiguriert haben, können Sie ihn ausführen und den Flow untersuchen.

1. Wählen Sie im Editor **Execute aus**.

   Wählen Sie alternativ in der Liste **State Machines** die Option **Ausführung starten** aus.

1. Akzeptieren **Sie im Dialogfeld „Ausführung starten**“ die generierte ID und geben Sie als **Eingabe** den folgenden JSON-Code ein:

   ```
   { "Cause" : "Custom Function Error" }
   ```

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

Die Step Functions Functions-Konsole leitet Sie zu einer Seite weiter, die mit Ihrer Ausführungs-ID betitelt ist, die als Seite mit den *Ausführungsdetails* bezeichnet wird. Sie können die Ausführungsergebnisse im Verlauf und nach Abschluss des Workflows überprüfen.

Um die Ausführungsergebnisse zu überprüfen, wählen Sie in der **Diagrammansicht** einzelne Status und anschließend die einzelnen Registerkarten im [Einzelheiten zu den Schritten](concepts-view-execution-details.md#exec-details-intf-step-details) 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](concepts-view-execution-details.md#exec-details-interface-overview).

Ihre Zustandsmaschine ruft die Lambda-Funktion auf, die eine auslöst. `CustomError` Wählen Sie den **CreateAccount**Schritt in der **Diagrammansicht** aus, um die Statusausgabe zu sehen. Ihre State-Machine-Ausgabe sollte der folgenden Abbildung ähneln: 

![\[Illustrativer Screenshot des Workflows, bei dem der benutzerdefinierte Fehler erkannt wurde.\]](http://docs.aws.amazon.com/de_de/step-functions/latest/dg/images/tutorial-console-retry-state-machine-error-output.png)


**Herzlichen Glückwunsch\$1**

 Sie haben jetzt eine Zustandsmaschine, die Fehlerbedingungen, die von einer Lambda-Funktion ausgelöst werden, abfangen und behandeln kann. Sie können dieses Muster verwenden, um eine robuste Fehlerbehandlung in Ihren Workflows zu implementieren.

**Anmerkung**  
Sie können auch Zustandsmaschinen erstellen, die [es bei Timeouts erneut versuchen](concepts-error-handling.md#error-handling-retrying-after-an-error), oder solche, die bei `Catch` Auftreten eines Fehlers oder einer Zeitüberschreitung in einen bestimmten Zustand übergehen. Beispiele für diese Fehlerbehandlungstechniken finden Sie unter [Beispiele für die Verwendung von Retry und von Catch](concepts-error-handling.md#error-handling-examples).