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 im Eine Step Functions Functions-Zustandsmaschine erstellen, die Lambda verwendetTutorial beschriebenen Zustandsautomaten und der Lambda-Funktion. Arbeiten Sie die Anleitung durch und testen Sie verschiedene Ergebnisse anhand verschiedener Pfade in einem ResultPath-Feld.

Tipp

Verwenden Sie den Datenflusssimulator in der Step Functions-Konsole, um die JSON-Pfadsyntax zu testen, besser zu verstehen, wie Daten innerhalb eines -Zustands manipuliert werden, und um zu sehen, wie Daten zwischen -Zuständen übergeben werden.

Verwenden Sie ResultPath , um die Eingabe durch das Ergebnis zu ersetzen

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 Sie die Eingabe durch ResultPath.

Verwenden Sie den Zustandsautomaten und die Lambda-Funktion, die in beschrieben sindEine Step Functions Functions-Zustandsmaschine erstellen, die Lambda verwendet, und ändern Sie den Serviceintegrationstyp in SDKAWS -Integration für die Lambda-Funktion. Geben Sie dazu den Amazon-Ressourcennamen (ARN) der Lambda-Funktion im Resource Feld des Task Status an, wie im folgenden Beispiel gezeigt. Durch die Verwendung der AWS SDK-Integration wird sichergestellt, dass das Task Statusergebnis nur die Ausgabe der Lambda-Funktion ohne Metadaten enthält.

{ "StartAt":"CallFunction", "States":{ "CallFunction": { "Type":"Task", "Resource":"arn:aws:lambda:us-east-2:123456789012:function:HelloFunction", "End": true } } }

Übergeben Sie dann die folgende Eingabe:

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

Die Lambda-Funktion liefert das folgende Ergebnis.

"Hello, AWS Step Functions!"
Tipp

Sie können dieses Ergebnis in der Step Functions Konsole anzeigen. Wählen Sie dazu auf der Seite Ausführungsdetails der Konsole die Lambda Funktion in der Diagrammansicht aus. Wählen Sie dann im Schrittdetails Bereich die Registerkarte Ausgabe aus, um dieses Ergebnis zu sehen.

Wenn nicht im -Zustand angegeben ResultPath ist oder wenn gesetzt "ResultPath": "$" ist, wird die Eingabe des -Zustands durch das Ergebnis der Lambda-Funktion ersetzt, und die Ausgabe des -Zustands 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 in die Ausgabe mit ResultPath.

Verwenden Sie ResultPath , um das Ergebnis in die Eingabe aufzunehmen

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

Einschließen von Eingaben mit ResultPath

Mit dem im Eine Step Functions Functions-Zustandsmaschine erstellen, die Lambda verwendetTutorial beschriebenen Zustandsautomaten und der Lambda-Funktion könnten wir die folgende Eingabe übergeben.

{ "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 ist das folgende.

"Hello, AWS Step Functions!"

Um die Eingabe beizubehalten, das Ergebnis der Lambda-Funktion einzufügen und dann den kombinierten JSON-Code in den nächsten Zustand zu übergeben, könnten wir ResultPath auf Folgendes setzen.

"ResultPath": "$.taskresult"

Dies schließt das Ergebnis der Lambda-Funktion mit der ursprünglichen Eingabe ein.

{ "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 an die ursprüngliche Eingabe als Wert für angehängttaskresult. 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 des strings Knotens in die Eingabe eingefügt.

{ "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 Sie 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 Sie die Eingabe durch ResultPath

Anhand des Beispiels des Zustandsautomaten und der Lambda-Funktion, die im Eine Step Functions Functions-Zustandsmaschine erstellen, die Lambda verwendetTutorial beschrieben werden, könnten wir die folgende Eingabe übergeben.

{ "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 ist das folgende.

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 der comment Knoten bereits in der Zustandseingabe vorhanden ist, "$.comment" ersetzt die Einstellung ResultPath auf 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ür den comment 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 Zustandsausgabe.

Verwenden Sie ResultPath , um sowohl Fehler als auch Eingabe in einen einzuschließen Catch

In der Behandlung von Fehlerbedingungen mithilfe einer Step Functions Functions-Zustandsmaschine-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: