ResultPath - 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.

ResultPath

Die Ausgabe eines Status kann eine Kopie seiner Eingabe, das entstandene Ergebnis (z. B. Ausgabe der Lambda-Funktion eines Task-Status) oder eine Kombination aus Eingabe und Ergebnis sein. Verwenden Sie ResultPath, um zu steuern, welche Kombination daraus an die Statusausgabe weitergeleitet wird.

Die folgenden Statustypen können ein Ergebnis generieren und ResultPath: einfügen.

Verwenden Sie ResultPath zum Kombinieren eines Aufgabenergebnisses mit der Aufgabeneingabe oder wählen Sie eine der folgenden Optionen aus. Der Pfad, den Sie für ResultPath angeben, steuert, welche Informationen an die Ausgabe weitergeleitet werden.

Anmerkung

ResultPath ist auf die Verwendung von Referenzpfaden beschränkt, die den Umfang begrenzen, damit er nur einen einzelnen Knoten in JSON identifizieren kann. Weitere Informationen finden Sie unter Referenzpfade unter Amazon States Language.

Diese Beispiele basieren auf dem Zustandsautomaten und der Lambda-Funktion, die in derErstellen einer Step Functions State Machine, die Lambda verwendet-Tutorial. Arbeiten Sie die Anleitung durch und testen Sie verschiedene Ergebnisse anhand verschiedener Pfade in einem ResultPath-Feld.

Tipp

Verwenden derDatenfluss-Simulator in der Step Functions Functions-Konsoleum die JSON-Pfadsyntax zu testen, um besser zu verstehen, wie Daten innerhalb eines Bundesstaates manipuliert werden,und um zu sehen, wie Daten zwischen Staaten weitergegeben werden.

Verwenden von ResultPath zum Ersetzen der Eingabe durch das Ergebnis

Wenn Sie keinen ResultPath angeben, ist das Standardverhalten, als hätten Sie "ResultPath": "$" angegeben. Da dies den Status anweist, die gesamte Eingabe durch das Ergebnis zu ersetzen, wird die Statuseingabe vollständig durch das Aufgabenergebnis ersetzt.

Das folgende Diagramm zeigt, wie der ResultPath die Eingabe vollständig durch das Ergebnis der Aufgabe ersetzen kann.


        Ersetzen der Eingabe durch ResultPath.

Verwendung der Zustandsmaschine und der Lambda-Funktion, die unterErstellen einer Step Functions State Machine, die Lambda verwendetweiterleiten, wenn wir die folgende Eingabe weiterleiten:

{ "comment": "This is a test of the input and output of a Task state.", "details": "Default example", "who": "AWS Step Functions" }

Die Lambda-Funktion stellt das folgende Ergebnis bereit.

"Hello, AWS Step Functions!"

WennResultPathist nicht im Bundesstaat angegeben oder wenn"ResultPath": "$"gesetzt ist, wird die Eingabe des Status durch das Ergebnis der Lambda-Funktion ersetzt und die Ausgabe des Status ist die folgende.

"Hello, AWS Step Functions!"
Anmerkung

ResultPath wird verwendet, um Inhalte aus dem Ergebnis in die Eingabe einzufügen, bevor sie an die Ausgabe weitergeleitet wird. Wenn ResultPath allerdings nicht angegeben ist, wird standardmäßig die gesamte Eingabe ersetzt.

Verwerfen des Ergebnisses und Beibehalten der urspünglichen Eingabe

Wenn Sie ResultPath auf null einstellen, wird die ursprüngliche Eingabe an die Ausgabe übergeben. Mit "ResultPath": null wird die Eingabenutzlast des Zustands direkt in die Ausgabe kopiert, ohne Rücksicht auf das Ergebnis.

Das folgende Diagramm zeigt, wie ein ResultPath gleich Null die Eingabe direkt in die Ausgabe kopiert.


        Kopieren Sie die Eingabe mit ResultPath in die Ausgabe.

Verwenden von ResultPath, um das Ergebnis durch di Eingabe zu ersetzen

Das folgende Diagramm zeigt, wie ResultPath das Ergebnis in die Eingabe einfügen kann.


        Einfügen der Eingabe in ResultPath

Verwenden des Zustandsautomaten und der Lambda-Funktion, die in derErstellen einer Step Functions State Machine, die Lambda verwendet-Tutorial können wir die folgende Eingabe weiterleiten.

{ "comment": "This is a test of the input and output of a Task state.", "details": "Default example", "who": "AWS Step Functions" }

Das Ergebnis der Lambda-Funktion wird Folgendes durchgeführt.

"Hello, AWS Step Functions!"

Um die Eingabe beizubehalten, fügen Sie das Ergebnis der Lambda-Funktion ein und leiten Sie dann den kombinierten JSON-Wert an den nächsten Status weiter, den wir festlegen könnenResultPathIn Folgendes:

"ResultPath": "$.taskresult"

Dadurch wird das Ergebnis der Lambda-Funktion in die ursprüngliche Eingabe eingefügt.

{ "comment": "This is a test of input and output of a Task state.", "details": "Default behavior example", "who": "AWS Step Functions", "taskresult": "Hello, AWS Step Functions!" }

Die Ausgabe der Lambda-Funktion wird als Wert für an die ursprüngliche Eingabe angehängttaskresultaus. Die Eingabe, einschließlich des neu eingefügten Werts, wird an den nächsten Status weitergeleitet.

Sie können das Ergebnis auch in einen untergeordneten Knoten der Eingabe einfügen. Legen Sie für ResultPath Folgendes fest.

"ResultPath": "$.strings.lambdaresult"

Starten einer Ausführung mit der folgenden Eingabe.

{ "comment": "An input comment.", "strings": { "string1": "foo", "string2": "bar", "string3": "baz" }, "who": "AWS Step Functions" }

Das Ergebnis der Lambda-Funktion wird als untergeordnetes Element desstrings-Knoten in der Eingabe.

{ "comment": "An input comment.", "strings": { "string1": "foo", "string2": "bar", "string3": "baz", "lambdaresult": "Hello, AWS Step Functions!" }, "who": "AWS Step Functions" }

Die Zustandsausgabe enthält jetzt die ursprüngliche JSON-Ausgabe mit dem Ergebnis als untergeordneten Knoten.

Verwenden von ResultPath, um einen Knoten in der Eingabe mit dem Ergebnis zu aktualisieren

Das folgende Diagramm zeigt, wie ResultPath den Wert der vorhandenen JSON-Knoten in der Eingabe mit Werten aus dem Aufgabenergebnis aktualisieren kann.


        Ersetzen der Eingabe durch ResultPath

Mit dem Beispiel des Zustandsautomaten und der Lambda-Funktion, die in derErstellen einer Step Functions State Machine, die Lambda verwendet-Tutorial können wir die folgende Eingabe weiterleiten.

{ "comment": "This is a test of the input and output of a Task state.", "details": "Default example", "who": "AWS Step Functions" }

Das Ergebnis der Lambda-Funktion wird Folgendes durchgeführt.

Hello, AWS Step Functions!

Statt die Eingabe beizubehalten und das Ergebnis als neuen Knoten in JSON einzufügen, können wir einen vorhandenen Knoten überschreiben.

Beispiel: Wie beim Auslassen oder Festlegen von "ResultPath": "$" wird der gesamte Knoten überschrieben. Sie können einen einzelnen Knoten festlegen, der mit dem Ergebnis überschrieben wird.

"ResultPath": "$.comment"

Da es sich beicomment-Knoten ist bereits in der Statuseingabe vorhanden, EinstellungResultPathzu"$.comment"ersetzt diesen Knoten in der Eingabe durch das Ergebnis der Lambda-Funktion. Ohne weiteres Filtern nach OutputPath wird Folgendes an die Ausgabe weitergeleitet.

{ "comment": "Hello, AWS Step Functions!", "details": "Default behavior example", "who": "AWS Step Functions", }

Der Wert fürcomment-Knoten,"This is a test of the input and output of a Task state."wird durch das Ergebnis der Lambda-Funktion ersetzt:"Hello, AWS Step Functions!"in der Statusausgabe.

Verwenden von ResultPath, um Fehler und Eingabe in einem Catch einzufügen

In der Bearbeiten von Fehlerbedingungen mithilfe eines Step Functions Functions-Zustandsautomaten-Anleitung erfahren Sie, wie Sie einen Zustandsautomaten verwenden, um einen Fehler abzufangen. In einigen Fällen können Sie die ursprüngliche Eingabe mit dem Fehler beibehalten. Verwenden Sie ResultPath in einem Catch, um den Fehler in die ursprüngliche Eingabe aufzunehmen, anstatt ihn zu ersetzen.

"Catch": [{ "ErrorEquals": ["States.ALL"], "Next": "NextTask", "ResultPath": "$.error" }]

Wenn die vorherige Catch-Anweisung einen Fehler abfängt, wird das Ergebnis in einem error-Knoten innerhalb der Statuseingabe eingefügt. Nutzen Sie dazu beispielsweise folgende Eingabe:

{"foo": "bar"}

Die Statusausgabe beim Abfangen eines Fehlers lautet wie folgt:

{ "foo": "bar", "error": { "Error": "Error here" } }

Weitere Informationen zur Fehlerbehandlung finden Sie im Folgenden: