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.
Status verwalten und Daten transformieren
Erfahren Sie mehr über das Übergeben von Daten zwischen Zuständen mithilfe von Variablen und das Transformieren von Daten mit JSONata.
Jeder Staat trifft eine Entscheidung oder führt eine Aktion auf der Grundlage von Eingaben aus, die er erhält. In den meisten Fällen leitet er dann die Ausgabe an andere Staaten weiter. In Workflow Studio können Sie auf den Registerkarten Eingabe und Ausgabe des Bedienfelds konfigurieren, wie ein Status seine Eingabe- und Ausgabedaten filtert und manipuliert. Inspektor-Panel Verwenden Sie die Informationslinks, um bei der Konfiguration von Eingaben und Ausgaben auf die kontextuelle Hilfe zuzugreifen.

Ausführliche Informationen darüber, wie Step Functions Eingabe und Ausgabe verarbeitet, finden Sie unterEingabe und Ausgabe in Step Functions verarbeiten.
Konfigurieren Sie die Eingabe für einen Status
Jeder Status erhält Eingaben aus dem vorherigen Status als JSON. Wenn Sie die Eingabe filtern möchten, können Sie den InputPath
Filter auf der Registerkarte Eingabe im Inspektor-Panel Bereich verwenden. Das InputPath
ist eine Zeichenfolge, die mit beginnt $
und einen bestimmten JSON-Knoten identifiziert. Diese werden als Referenzpfade bezeichnet und folgen der JsonPath Syntax.
Um die Eingabe zu filtern:
-
Wählen Sie Eingabe filtern mit InputPath.
-
Geben Sie einen JsonPath
für den InputPath
Filter gültigen Wert ein. Beispiel,$.data
.
Ihr InputPath
Filter wird zu Ihrem Workflow hinzugefügt.
Beispiel 1: Verwenden Sie den InputPath Filter in Workflow Studio
Angenommen, die Eingabe für Ihren Status enthält die folgenden JSON-Daten.
{
"comment": "Example for InputPath",
"dataset1": {
"val1": 1,
"val2": 2,
"val3": 3
},
"dataset2": {
"val1": "a",
"val2": "b",
"val3": "c"
}
}
Um den InputPath
Filter anzuwenden, wählen Sie Eingabe filtern mit InputPath und geben Sie dann einen entsprechenden Referenzpfad ein. Wenn Sie eingeben$.dataset2.val1
, wird der folgende JSON-Code als Eingabe an den Status übergeben.
{"a"}
Ein Referenzpfad kann auch eine Auswahl von Werten enthalten. Wenn es sich bei den Daten, auf die Sie verweisen, um Daten handelt { "a":
[1, 2, 3, 4] }
und Sie den Referenzpfad $.a[0:2]
als InputPath
Filter anwenden, ist das folgende Ergebnis.
[ 1, 2 ]
Status des parallelen WorkflowsWorkflow-Status zuordnen, und Workflow-Status übergeben Flow-Status verfügen über eine zusätzliche Eingabefilteroption, die auf der jeweiligen Parameters
Registerkarte Eingabe aufgerufen wird. Dieser Filter wird nach dem InputPath Filter wirksam und kann verwendet werden, um ein benutzerdefiniertes JSON-Objekt zu erstellen, das aus einem oder mehreren Schlüssel-Wert-Paaren besteht. Bei den Werten der einzelnen Paare kann es sich entweder um statische Werte handeln, sie können aus der Eingabe ausgewählt werden, oder sie können Zugreifen auf Ausführungsdaten aus dem Context-Objekt in Step Functions mit einem Pfad aus dem ausgewählt werden.
Anmerkung
Um anzugeben, dass ein Parameter einen Referenzpfad verwendet, um auf einen JSON-Knoten in der Eingabe zu verweisen, muss der Parametername mit enden.$
.
Beispiel 2: Erstellen Sie eine benutzerdefinierte JSON-Eingabe für den Parallel-Status
Angenommen, die folgenden JSON-Daten sind die Eingabe für einen Parallelstatus.
{
"comment": "Example for Parameters",
"product": {
"details": {
"color": "blue",
"size": "small",
"material": "cotton"
},
"availability": "in stock",
"sku": "2317",
"cost": "$23"
}
}
Um einen Teil dieser Eingabe auszuwählen und zusätzliche Schlüssel-Wert-Paare mit einem statischen Wert zu übergeben, können Sie im Feld Parameter auf der Registerkarte Eingabe des Status Parallel Folgendes angeben.
{
"comment": "Selecting what I care about.",
"MyDetails": {
"size.$": "$.product.details.size",
"exists.$": "$.product.availability",
"StaticValue": "foo"
}
}
Die folgenden JSON-Daten werden das Ergebnis sein.
{
"comment": "Selecting what I care about.",
"MyDetails": {
"size": "small",
"exists": "in stock",
"StaticValue": "foo"
}
}
Konfigurieren Sie die Ausgabe eines Zustands
Jeder Status erzeugt eine JSON-Ausgabe, die gefiltert werden kann, bevor sie an den nächsten Status übergeben wird. Es sind mehrere Filter verfügbar, und jeder wirkt sich auf unterschiedliche Weise auf die Ausgabe aus. Die für jeden Status verfügbaren Ausgabefilter sind auf der Registerkarte „Ausgabe“ im Inspektorfenster aufgeführt. Für Workflow-Status der Aufgabe Bundesstaaten werden alle von Ihnen ausgewählten Ausgabefilter in der folgenden Reihenfolge verarbeitet:
-
ResultSelector
: Verwenden Sie diesen Filter, um das Ergebnis des Status zu manipulieren. Sie können ein neues JSON-Objekt mit Teilen des Ergebnisses erstellen. -
Zustandsausgabe mithilfe von ResultPath In-Step-Funktionen angeben
: Verwenden Sie diesen Filter, um eine Kombination aus der Statuseingabe und dem Aufgabenergebnis auszuwählen, die an die Ausgabe übergeben werden soll. -
Filtern der Statusausgabe mit OutputPath
: Verwenden Sie diesen Filter, um die JSON-Ausgabe zu filtern und auszuwählen, welche Informationen aus dem Ergebnis an den nächsten Status übergeben werden.
Benutze ResultSelector
ResultSelector
ist ein optionaler Ausgabefilter für die folgenden Staaten:
-
Workflow-Status der AufgabeStaaten, bei denen es sich ausschließlich um Staaten handelt, die auf der Registerkarte Aktionen von aufgeführt sindStaaten (Browser).
-
Workflow-Status zuordnenStaaten, auf der Registerkarte Flow des States-Browsers.
-
Status des parallelen WorkflowsStaaten, auf der Registerkarte Flow des States-Browsers.
ResultSelector
kann verwendet werden, um ein benutzerdefiniertes JSON-Objekt zu erstellen, das aus einem oder mehreren Schlüssel-Wert-Paaren besteht. Die Werte jedes Paares können entweder statische Werte sein oder aus dem Ergebnis des Zustands mit einem Pfad ausgewählt werden.
Anmerkung
Um anzugeben, dass ein Parameter einen Pfad verwendet, um auf einen JSON-Knoten im Ergebnis zu verweisen, muss der Parametername mit enden.$
.
Beispiel für die Verwendung eines ResultSelector Filters
In diesem Beispiel verwenden Sie, ResultSelector
um die Antwort des Amazon CreateCluster EMR-API-Aufrufs für einen Amazon CreateCluster
EMR-Status zu manipulieren. Das Folgende ist das Ergebnis des Amazon CreateCluster
EMR-API-Aufrufs.
{
"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"
}
}
Um einen Teil dieser Informationen auszuwählen und ein zusätzliches Schlüssel-Wert-Paar mit einem statischen Wert zu übergeben, geben Sie Folgendes in das ResultSelectorFeld auf der Registerkarte Ausgabe des Bundesstaates ein.
{
"result": "found",
"ClusterId.$": "$.output.ClusterId",
"ResourceType.$": "$.resourceType"
}
Die Verwendung ResultSelector
führt zu dem folgenden Ergebnis.
{
"result": "found",
"ClusterId": "AKIAIOSFODNN7EXAMPLE",
"ResourceType": "elasticmapreduce"
}
Benutzen ResultPath
Die Ausgabe eines Zustands kann eine Kopie seiner Eingabe, des von ihm erzeugten Ergebnisses oder eine Kombination aus Eingabe und Ergebnis sein. Verwenden Sie ResultPath
, um zu steuern, welche Kombination daraus an die Statusausgabe weitergeleitet wird. Weitere Anwendungsfälle von finden ResultPath
Sie unterZustandsausgabe mithilfe von ResultPath In-Step-Funktionen angeben.
ResultPath
ist ein optionaler Ausgabefilter für die folgenden Zustände:
-
Workflow-Status der AufgabeStaaten, das sind alles Staaten, die auf der Registerkarte „Aktionen“ des Status-Browsers aufgeführt sind.
-
Workflow-Status zuordnenStaaten, auf der Registerkarte Flow des States-Browsers.
-
Status des parallelen WorkflowsStaaten, auf der Registerkarte Flow des States-Browsers.
-
Workflow-Status übergebenStaaten, auf der Registerkarte Flow des States-Browsers.
ResultPath
kann verwendet werden, um das Ergebnis zur ursprünglichen Statuseingabe hinzuzufügen. Der angegebene Pfad gibt an, wo das Ergebnis hinzugefügt werden soll.
Beispiel für die Verwendung eines ResultPath Filters
Nehmen wir an, das Folgende ist die Eingabe für einen Task-Status.
{
"details": "Default example",
"who": "AWS Step Functions"
}
Das Ergebnis des Task-Status ist das Folgende.
Hello, AWS Step Functions
Sie können dieses Ergebnis zur Eingabe des Status hinzufügen, indem Sie einen Referenzpfad anwenden ResultPath
und eingeben, der angibt, wo das Ergebnis hinzugefügt werden soll, z. B.$.taskresult
:
Damit ResultPath
ist das Folgende das JSON, das als Ausgabe des Status übergeben wird.
{
"details": "Default example",
"who": "AWS Step Functions",
"taskresult": "Hello, AWS Step Functions!"
}
Benutze OutputPath
Mit dem OutputPath
Filter können Sie unerwünschte Informationen herausfiltern und nur den Teil von JSON übergeben, den Sie benötigen. Das OutputPath
ist eine Zeichenfolge, die mit beginnt $
und Knoten innerhalb von JSON-Text identifiziert.
Beispiel für die Verwendung eines OutputPath Filters
Stellen Sie sich vor, ein Lambda Invoke-API-Aufruf gibt zusätzlich zum Ergebnis der Lambda-Funktion Metadaten zurück.
{
"ExecutedVersion": "$LATEST",
"Payload": {
"foo": "bar",
"colors": [
"red",
"blue",
"green"
],
"car": {
"year": 2008,
"make": "Toyota",
"model": "Matrix"
}
},
"SdkHttpMetadata": {
"AllHttpHeaders": {
"X-Amz-Executed-Version": ["$LATEST"]
...
Sie können es verwendenOutputPath
, um die zusätzlichen Metadaten herauszufiltern. Standardmäßig lautet der Wert des OutputPathFilters für Lambda Invoke-Zustände, die mit dem Workflow Studio erstellt wurden. $.Payload
Dieser Standardwert entfernt die zusätzlichen Metadaten und gibt eine Ausgabe zurück, die der direkten Ausführung der Lambda-Funktion entspricht.
Das Beispiel für das Ergebnis der Lambda Invoke-Aufgabe und der Wert von $.Payload
für den Ausgabefilter übergeben die folgenden JSON-Daten als Ausgabe.
{
"foo": "bar",
"colors": [
"red",
"blue",
"green"
],
"car": {
"year": 2008,
"make": "Toyota",
"model": "Matrix"
}
}
Anmerkung
Der OutputPath
Filter ist der letzte Ausgabefilter, der wirksam wird. Wenn Sie also zusätzliche Ausgabefilter wie ResultSelector
oder verwendenResultPath
, sollten Sie den Standardwert von $.Payload
für den OutputPath
Filter entsprechend ändern.