

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.

# Parameter in Step Functions Functions-Workflows manipulieren
<a name="input-output-inputpath-params"></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).

Die `ResultSelector` Felder`InputPath`, `Parameters` und bieten eine Möglichkeit, JSON zu manipulieren, während es sich durch Ihren Workflow bewegt. `InputPath`kann die übergebene Eingabe einschränken, indem die JSON-Notation mithilfe eines Pfads gefiltert wird (siehe[JSONPath Pfade verwenden](amazon-states-language-paths.md)). Mit dem `Parameters` Feld können Sie eine Sammlung von Schlüssel-Wert-Paaren übergeben, indem Sie entweder statische Werte oder Auswahlen aus der Eingabe mithilfe eines Pfads verwenden.

 Das `ResultSelector` Feld bietet eine Möglichkeit, das Ergebnis des Zustands zu manipulieren, bevor `ResultPath` es angewendet wird. 

AWS Step Functionswendet zuerst das `InputPath` Feld und dann das `Parameters` Feld an. Sie können zuerst mit `InputPath` Ihre unformatierte Eingabe zu einer gewünschten Auswahl filtern und anschließend `Parameters` anwenden, um die Eingabe weiter zu bearbeiten oder neue Werte hinzuzufügen. Anschließend können Sie das `ResultSelector` Feld verwenden, um die Ausgabe des Status zu bearbeiten, bevor er angewendet `ResultPath` wird.

## InputPath
<a name="input-output-inputpath"></a>

Verwenden Sie `InputPath`, um einen Teil der Zustandseingabe auszuwählen. 

Nehmen Sie beispielsweise an, dass die Eingabe für Ihren zustand Folgendes enthält.

```
{
  "comment": "Example for InputPath.",
  "dataset1": {
    "val1": 1,
    "val2": 2,
    "val3": 3
  },
  "dataset2": {
    "val1": "a",
    "val2": "b",
    "val3": "c"
  }
}
```

Dann könnten Sie `InputPath` anwenden.

```
"InputPath": "$.dataset2",
```

Mit dem vorherigen `InputPath` wird der folgende JSON-Code als Eingabe übergeben.

```
{
  "val1": "a",
  "val2": "b",
  "val3": "c"
}
```

**Anmerkung**  
Ein Pfad kann zu einer Auswahl von Werten führen. Betrachten Sie das folgende Beispiel.  

```
{ "a": [1, 2, 3, 4] }
```
Wenn Sie den Pfad `$.a[0:2]` anwenden, kommt es zu folgendem Ergebnis.  

```
[ 1, 2 ]
```

## Parameters
<a name="input-output-parameters"></a>

In diesem Abschnitt werden die verschiedenen Möglichkeiten beschrieben, wie Sie das Parameterfeld verwenden können. 

### Schlüssel-Wert-Paare
<a name="input-output-parameters-keyvalue"></a>

Verwenden Sie das `Parameters` Feld, um eine Sammlung von Schlüssel-Wert-Paaren zu erstellen, die als Eingabe übergeben werden. Die Werte der einzelnen Werte können entweder statische Werte sein, die Sie in Ihre Zustandsmaschine-Definition aufnehmen, oder sie können entweder aus der Eingabe oder dem Kontextobjekt mit einem Pfad ausgewählt werden. Bei Schlüssel-Wert-Paaren, bei denen der Wert mit einem Pfad ausgewählt wird, muss der Schlüsselname mit `.$` enden. 

Nehmen Sie beispielsweise an, Sie stellen die folgenden Eingaben bereit. 

```
{
  "comment": "Example for Parameters.",
  "product": {
    "details": {
       "color": "blue",
       "size": "small",
       "material": "cotton"
    },
    "availability": "in stock",
    "sku": "2317",
    "cost": "$23"
  }
}
```

Um einige der Informationen auszuwählen, können Sie diese in der Definition Ihres Zustandsautomaten festlegen. 

```
"Parameters": {
        "comment": "Selecting what I care about.",
        "MyDetails": {
          "size.$": "$.product.details.size",
          "exists.$": "$.product.availability",
          "StaticValue": "foo"
        }
      },
```

Mit der vorherigen Eingabe und dem Feld `Parameters` wird der folgende JSON-Code übergeben.

```
{
  "comment": "Selecting what I care about.",
  "MyDetails": {
      "size": "small",
      "exists": "in stock",
      "StaticValue": "foo"
  }
},
```

Zusätzlich zur Eingabe können Sie auf ein spezielles JSON-Objekt zugreifen, das als Context-Objekt bezeichnet wird. Das Context-Objekt enthält Informationen über die Ausführung Ihrer Zustandsmaschine. Siehe [Zugreifen auf Ausführungsdaten aus dem Context-Objekt in Step Functions](input-output-contextobject.md).

### Verbundene Ressourcen
<a name="input-output-parameters-connected"></a>

Das Feld `Parameters` kann auch Daten an verbundene Ressourcen übergeben. Wenn Ihr Aufgabenstatus beispielsweise die Orchestrierung eines AWS Batch Jobs ist, können Sie die entsprechenden API-Parameter direkt an die API-Aktionen dieses Dienstes übergeben. Weitere Informationen finden Sie unter:
+ [Übergeben von Parametern an eine Service-API in Step Functions](connect-parameters.md)
+ [Integrieren von -Services](integrate-services.md)

### Amazon S3
<a name="input-output-parameters-s3"></a>

Wenn die Lambda-Funktionsdaten, die Sie zwischen Staaten weitergeben, auf mehr als 262.144 Byte anwachsen könnten, empfehlen wir, Amazon S3 zum Speichern der Daten zu verwenden und eine der folgenden Methoden zu implementieren:
+ Verwenden Sie den *Status Distributed Map* in Ihrem Workflow, damit der `Map` Status Eingaben direkt aus Amazon S3 S3-Datenquellen lesen kann. Weitere Informationen finden Sie unter [Verteilter Modus](state-map-distributed.md).
+ Analysieren Sie den Amazon-Ressourcennamen (ARN) des Buckets im `Payload` Parameter, um den Bucket-Namen und den Schlüsselwert zu erhalten. Weitere Informationen finden Sie unter [Amazon S3 verwenden, ARNs anstatt große Nutzlasten in Step Functions zu übergeben](sfn-best-practices.md#avoid-exec-failures).

Alternativ können Sie Ihre Implementierung so anpassen, dass kleinere Nutzlasten in Ihren Ausführungen übergeben werden.

## ResultSelector
<a name="input-output-resultselector"></a>

 Verwenden Sie das `ResultSelector` Feld, um das Ergebnis eines Zustands zu bearbeiten, bevor er angewendet `ResultPath` wird. Mit dem `ResultSelector` Feld können Sie eine Sammlung von Schlüsselwertpaaren erstellen, wobei die Werte statisch sind oder aus dem Ergebnis des Bundesstaates ausgewählt werden. Mithilfe des `ResultSelector` Felds können Sie auswählen, welche Teile des Ergebnisses eines Bundesstaates Sie an das `ResultPath` Feld übergeben möchten.

**Anmerkung**  
Mit dem `ResultPath` Feld können Sie die Ausgabe des `ResultSelector` Felds zur ursprünglichen Eingabe hinzufügen.

`ResultSelector`ist ein optionales Feld in den folgenden Zuständen:
+ [Workflow-Status zuordnen](state-map.md)
+ [Workflow-Status der Aufgabe](state-task.md)
+ [Status des parallelen Workflows](state-parallel.md)

Beispielsweise geben Step Functions Functions-Dienstintegrationen zusätzlich zur Nutzlast im Ergebnis Metadaten zurück. `ResultSelector`kann Teile des Ergebnisses auswählen und sie mit der Statuseingabe mit zusammenführen. `ResultPath` In diesem Beispiel möchten wir nur das `resourceType` und auswählen und `ClusterId` es mit der Statuseingabe aus einem Amazon EMR CreateCluster.Sync zusammenführen. Angesichts der folgenden Bedingungen:

```
{
  "resourceType": "elasticmapreduce",
  "resource": "createCluster.sync",
  "output": {
    "SdkHttpMetadata": {
      "HttpHeaders": {
        "Content-Length": "1112",
        "Content-Type": "application/x-amz-JSON-1.1",
        "Date": "Mon, 25 Nov 2019 19:41:29 GMT",
        "x-amzn-RequestId": "1234-5678-9012"
      },
      "HttpStatusCode": 200
    },
    "SdkResponseMetadata": {
      "RequestId": "1234-5678-9012"
    },
    "ClusterId": "AKIAIOSFODNN7EXAMPLE"
  }
}
```

Sie können dann das `resourceType` und auswählen `ClusterId` mit`ResultSelector`:

```
"Create Cluster": {
  "Type": "Task",
  "Resource": "arn:aws:states:::elasticmapreduce:createCluster.sync",
  "Parameters": {
    <some parameters>
  },
  "ResultSelector": {
    "ClusterId.$": "$.output.ClusterId",
    "ResourceType.$": "$.resourceType"
  },
  "ResultPath": "$.EMROutput",
  "Next": "Next Step"
}
```

Mit der angegebenen Eingabe `ResultSelector` erzeugt die Verwendung:

```
{
  "OtherDataFromInput": {},
  "EMROutput": {
      "ClusterId": "AKIAIOSFODNN7EXAMPLE",
      "ResourceType": "elasticmapreduce",
  }
}
```

### Ein Array von Arrays reduzieren
<a name="flatten-array-of-arrays-result-selector"></a>

Wenn der [Workflow-Status zuordnen](state-map.md) Status [Status des parallelen Workflows](state-parallel.md) oder in Ihren Zustandsmaschinen ein Array von Arrays zurückgibt, können Sie diese mit dem Feld in ein flaches Array umwandeln. [ResultSelector](#input-output-resultselector) Sie können dieses Feld in die Zustandsdefinition Parallel oder Map aufnehmen, um das Ergebnis dieser Zustände zu manipulieren.

Um Arrays zu reduzieren, verwenden Sie die Syntax: `[*]` in dem `ResultSelector` Feld, wie im folgenden Beispiel gezeigt.

```
"ResultSelector": {
    "flattenArray.$": "$[*][*]"
  }
```

Beispiele, die zeigen, wie ein Array geglättet wird, finden Sie in *Schritt 3* der folgenden Tutorials:
+ [Verarbeitung von Batchdaten mit einer Lambda-Funktion in Step Functions](tutorial-itembatcher-param-task.md)
+ [Verarbeitung einzelner Elemente mit einer Lambda-Funktion in Step Functions](tutorial-itembatcher-single-item-process.md)