

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.

# Beispiel: Manipulation von Zustandsdaten mit Pfaden in Step Functions Functions-Workflows
<a name="input-output-example"></a>

**Status verwalten und Daten transformieren**  
Erfahren Sie mehr über das [Übergeben von Daten zwischen Zuständen mithilfe von Variablen](workflow-variables.md) und das [Transformieren von Daten mit JSONata](transforming-data.md).

Dieses Thema enthält Beispiele für die Bearbeitung von JSON-Statuseingabe und -Ausgabe mithilfe der OutputPath Felder InputPath ResultPath, und. 

Jeder andere Status als ein [Workflow-Status „Fehlgeschlagen“](state-fail.md) Bundesstaat oder ein [Workflow-Status erfolgreich](state-succeed.md) Bundesstaat kann die Eingabe- und Ausgabeverarbeitungsfelder enthalten, z. B. `InputPath``ResultPath`, oder`OutputPath`. Darüber hinaus unterstützen die [Workflow-Status „Auswahl“](state-choice.md) Bundesstaaten [Workflow-Status warten](state-wait.md) und das `ResultPath` Feld nicht. Mit diesen Feldern können Sie a verwenden, [JsonPath](https://datatracker.ietf.org/wg/jsonpath/about/)um die JSON-Daten zu filtern, während sie Ihren Workflow durchlaufen. 

Sie können das `Parameters` Feld auch verwenden, um die JSON-Daten zu bearbeiten, während sie Ihren Workflow durchlaufen. Für weitere Informationen zur Nutzung von `Parameters` siehe [Parameter in Step Functions Functions-Workflows manipulieren](input-output-inputpath-params.md).

Beginnen Sie beispielsweise mit der im [Eine Step Functions Functions-Zustandsmaschine erstellen, die Lambda verwendet](tutorial-creating-lambda-state-machine.md) Tutorial beschriebenen AWS Lambda Funktion und der Zustandsmaschine. Ändern Sie den Zustandsautomaten so, dass er `InputPath`, `ResultPath` und `OutputPath` enthält.

```
{
  "Comment": "A Hello World example of the Amazon States Language using an AWS Lambda function",
  "StartAt": "HelloWorld",
  "States": {
    "HelloWorld": {
      "Type": "Task",
      "Resource": "arn:aws:lambda:region:123456789012:function:HelloFunction",
      "InputPath": "$.lambda",
      "ResultPath": "$.data.lambdaresult",
      "OutputPath": "$.data",
      "End": true
    }
  }
}
```

Starten einer Ausführung mit der folgenden Eingabe.

```
{
  "comment": "An input comment.",
  "data": {
    "val1": 23,
    "val2": 17
  },
  "extra": "foo",
  "lambda": {
    "who": "AWS Step Functions"
  }
}
```

Gehen Sie davon aus, dass die `extra` Knoten `comment` und verworfen werden können, Sie aber die Ausgabe der Lambda-Funktion einbeziehen und die Informationen im Knoten beibehalten möchten. `data`

Im aktualisierten Zustandsautomaten wird der `Task`-Zustand geändert, damit die Aufgabeneingabe verarbeitet wird.

```
"InputPath": "$.lambda",
```

Diese Zeile in der Definition des Zustandsautomaten begrenzt die Aufgabeneingabe ausschließlich auf `lambda`-Knoten aus der Statuseingabe. Die Lambda-Funktion empfängt nur das JSON-Objekt `{"who": "AWS Step Functions"}` als Eingabe. 

```
"ResultPath": "$.data.lambdaresult",
```

Dadurch wird `ResultPath` die Zustandsmaschine angewiesen, das Ergebnis der Lambda-Funktion als untergeordnetes Element des Knotens in der ursprünglichen Zustandsmaschineneingabe in einen `data` Knoten mit dem Namen `lambdaresult` einzufügen. Da Sie keine weiteren Manipulationen an der ursprünglichen Eingabe und dem verwendeten Ergebnis vornehmen`OutputPath`, enthält die Ausgabe des Status jetzt das Ergebnis der Lambda-Funktion mit der ursprünglichen Eingabe.

```
{
  "comment": "An input comment.",
  "data": {
    "val1": 23,
    "val2": 17,
    "lambdaresult": "Hello, AWS Step Functions!"
  },
  "extra": "foo",
  "lambda": {
    "who": "AWS Step Functions"
  }
}
```

Unser Ziel war es jedoch, nur den `data` Knoten beizubehalten und das Ergebnis der Lambda-Funktion einzubeziehen. `OutputPath`filtert dieses kombinierte JSON, bevor es an die Statusausgabe übergeben wird.

```
"OutputPath": "$.data",
```

Dadurch wird nur der `data`-Knoten aus der ursprünglichen Eingabe (einschließlich des untergeordneten `lambdaresult`-Elements, das von `ResultPath` eingefügt wurde) für die Weiterleitung an die Ausgabe ausgewählt. Die Statusausgabe wird auf Folgende Weise gefiltert:

```
{
  "val1": 23,
  "val2": 17,
  "lambdaresult": "Hello, AWS Step Functions!"
}
```

In diesem `Task`-Status:

1. `InputPath`sendet nur den `lambda` Knoten von der Eingabe an die Lambda-Funktion.

1. `ResultPath` fügt das Ergebnis als untergeordnetes Element des `data`-Knotens in die ursprünglichen Eingabe ein.

1. `OutputPath`filtert die Zustandseingabe (die jetzt das Ergebnis der Lambda-Funktion enthält), sodass nur der `data` Knoten an die Statusausgabe übergeben wird.

**Example um die Eingabe, das Ergebnis und die endgültige Ausgabe der ursprünglichen Zustandsmaschine zu manipulieren mit JsonPath**  
Stellen Sie sich den folgenden Zustandsmaschine vor, der die Identität und Adresse eines Versicherungsantragstellers überprüft.  
Das vollständige Beispiel finden Sie unter [So verwenden Sie JSON Path in Step Functions](https://github.com/aws-samples/serverless-account-signup-service).

```
{
  "Comment": "Sample state machine to verify an applicant's ID and address",
  "StartAt": "Verify info",
  "States": {
    "Verify info": {
      "Type": "Parallel",
      "End": true,
      "Branches": [
        {
          "StartAt": "Verify identity",
          "States": {
            "Verify identity": {
              "Type": "Task",
              "Resource": "arn:aws:states:::lambda:invoke",
              "Parameters": {
                "Payload.$": "$",
                "FunctionName": "arn:aws:lambda:us-east-2:111122223333:function:check-identity:$LATEST"
              },
              "End": true
            }
          }
        },
        {
          "StartAt": "Verify address",
          "States": {
            "Verify address": {
              "Type": "Task",
              "Resource": "arn:aws:states:::lambda:invoke",
              "Parameters": {
                "Payload.$": "$",
                "FunctionName": "arn:aws:lambda:us-east-2:111122223333:function:check-address:$LATEST"
              },
              "End": true
            }
          }
        }
      ]
    }
  }
}
```
Wenn Sie diese Zustandsmaschine mit der folgenden Eingabe ausführen, schlägt die Ausführung fehl, da die Lambda-Funktionen, die die Überprüfung durchführen, nur die Daten erwarten, die verifiziert werden müssen, als Eingabe. Daher müssen Sie die Knoten, die die zu verifizierenden Informationen enthalten, mit einem geeigneten JsonPath angeben.  

```
{
  "data": {
    "firstname": "Jane",
    "lastname": "Doe",
    "identity": {
      "email": "jdoe@example.com",
      "ssn": "123-45-6789"
    },
    "address": {
      "street": "123 Main St",
      "city": "Columbus",
      "state": "OH",
      "zip": "43219"
    },
    "interests": [
      {
        "category": "home",
        "type": "own",
        "yearBuilt": 2004
      },
      {
        "category": "boat",
        "type": "snowmobile",
        "yearBuilt": 2020
      },
      {
        "category": "auto",
        "type": "RV",
        "yearBuilt": 2015
      },
    ]
  }
}
```
Um den Knoten anzugeben, den die `check-identity` Lambda-Funktion verwenden muss, verwenden Sie das `InputPath` Feld wie folgt:  

```
"InputPath": "$.data.identity"
```
Und um den Knoten anzugeben, den die `check-address` Lambda-Funktion verwenden muss, verwenden Sie das `InputPath` Feld wie folgt:  

```
"InputPath": "$.data.address"
```
Wenn Sie nun das Überprüfungsergebnis in der ursprünglichen State-Machine-Eingabe speichern möchten, verwenden Sie das `ResultPath` Feld wie folgt:  

```
"ResultPath": "$.results"
```
Wenn Sie jedoch nur die Identitäts- und Überprüfungsergebnisse benötigen und die ursprüngliche Eingabe verwerfen, verwenden Sie das `OutputPath` Feld wie folgt:  

```
"OutputPath": "$.results"
```

Weitere Informationen finden Sie unter [Eingabe und Ausgabe in Step Functions verarbeiten](concepts-input-output-filtering.md).

## Filtern der Statusausgabe mit OutputPath
<a name="input-output-outputpath"></a>

Mit können `OutputPath` Sie einen Teil der Statusausgabe auswählen, der an den nächsten Status übergeben werden soll. Mit diesem Ansatz können Sie unerwünschte Informationen herausfiltern und nur den Teil von JSON übergeben, den Sie benötigen.

Wenn Sie kein `OutputPath` angeben, ist der Standardwert `$`. Dieser übergibt den gesamten JSON-Knoten (bestimmt durch die Zustandseingabe, das Aufgabenergebnis und `ResultPath`) an den nächsten Zustand.