Zustandsausgabe mithilfe von ResultPath In-Step-Funktionen angeben - 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.

Zustandsausgabe mithilfe von ResultPath In-Step-Funktionen angeben

Status verwalten und Daten transformieren

Diese Seite bezieht sich aufJSONPath. Step Functions hat kürzlich Variablen hinzugefügt und JSONata dient der Verwaltung von Zustands- und Transformationsdaten.

Erfahren Sie mehr über das Übergeben von Daten mit Variablen und das Transformieren von Daten mit JSONata.

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

ResultPathist auf die Verwendung von Referenzpfaden beschränkt, die den Umfang einschränken, sodass der Pfad nur einen einzelnen Knoten identifizieren darfJSON. Weitere Informationen finden Sie unter Referenzpfade unter Amazon States Language.

Wird verwendet ResultPath , um die Eingabe durch das Aufgabenergebnis zu ersetzen

Wenn Sie kein a angebenResultPath, ist das Standardverhalten dasselbe wie"ResultPath": "$". Der Status ersetzt die gesamte Statuseingabe durch das Ergebnis der Aufgabe.

# State Input { "comment": "This is a test", "details": "Default example", "who" : "Step Functions" } # Path "ResultPath": "$" # Task result "Hello, Step Functions!" # State Output "Hello, Step Functions!"
Anmerkung

ResultPath wird verwendet, um Inhalte aus dem Ergebnis in die Eingabe einzufügen, bevor sie an die Ausgabe weitergeleitet wird. Wenn jedoch ResultPath nicht angegeben ist, besteht die Standardaktion darin, die gesamte Eingabe zu ersetzen.

Verwerfen Sie das Ergebnis und behalten Sie die ursprüngliche Eingabe bei

Wenn Sie ResultPath auf einstellennull, gibt der Status die ursprüngliche Eingabe an die Ausgabe weiter. Die Eingabe-Payload des Status wird ohne Berücksichtigung des Aufgabenergebnisses direkt in die Ausgabe kopiert.

# State Input { "comment": "This is a test", "details": "Default example", "who" : "Step Functions" } # Path "ResultPath": null # Task result "Hello, Step Functions!" # State Output { "comment": "This is a test", "details": "Default example", "who" : "Step Functions" }

Wird verwendet ResultPath , um das Ergebnis in die Eingabe einzubeziehen

Wenn Sie einen Pfad für angeben ResultPath, kombiniert die Statusausgabe die Statuseingabe und das Aufgabenergebnis:

# State Input { "comment": "This is a test", "details": "Default example", "who" : "Step Functions" } # Path "ResultPath": "$.taskresult" # Task result "Hello, Step Functions!" # State Output { "comment": "This is a test", "details": "Default example", "who" : "Step Functions", "taskresult" : "Hello, Step Functions!" }

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

"ResultPath": "$.strings.lambdaresult"

Angesichts der folgenden Eingabe:

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

Das Aufgabenergebnis würde als untergeordnetes Element des strings Knotens in die Eingabe eingefügt.

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

Die Statusausgabe enthält jetzt die ursprüngliche Eingabe JSON mit dem Ergebnis als untergeordneten Knoten.

Wird verwendet ResultPath , um einen Knoten in der Eingabe mit dem Ergebnis zu aktualisieren

Wenn Sie einen vorhandenen Knoten für angeben ResultPath, ersetzt das Aufgabenergebnis diesen vorhandenen Knoten:

# State Input { "comment": "This is a test", "details": "Default example", "who" : "Step Functions" } # Path "ResultPath": "$.comment" # Task result "Hello, Step Functions!" # State Output { "comment": "Hello, Step Functions!", "details": "Default example", "who" : "Step Functions" }

Wird verwendet ResultPath , um sowohl Fehler als auch Eingaben in eine Catch

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: