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 Workflows ResultPath in Step Functions angeben
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 Geltungsbereich einschränken, sodass nur ein einziger Knoten identifiziert werden kannJSON. Weitere Informationen finden Sie unter Referenzpfade unter Amazon States Language.
Diese Beispiele basieren auf der State Machine und der Lambda-Funktion, die im Eine Step Functions Functions-Zustandsmaschine erstellen, die Lambda verwendet Tutorial beschrieben wurden. Arbeiten Sie die Anleitung durch und testen Sie verschiedene Ergebnisse anhand verschiedener Pfade in einem ResultPath
-Feld.
Verwenden Sie ResultPath für Folgendes:
Wird verwendet 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.
Verwenden Sie die Zustandsmaschine und die Lambda-Funktion, die unter beschrieben sindEine Step Functions Functions-Zustandsmaschine erstellen, die Lambda verwendet, und ändern Sie den Serviceintegrationstyp in AWS SDKIntegration für die Lambda-Funktion. Geben Sie dazu die Lambda-Funktion Amazon Resource Name (ARN) im Resource
Feld des Task
Bundesstaates an, wie im folgenden Beispiel gezeigt. Durch die AWS SDK Integration wird sichergestellt, dass das Task
Zustandsergebnis nur die Lambda-Funktionsausgabe 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 auf der Step Functions Konsole
Wenn im Status ResultPath
nicht angegeben oder gesetzt "ResultPath":
"$"
ist, wird die Eingabe des Status durch das Ergebnis der Lambda-Funktion ersetzt, und die Ausgabe des Status lautet wie folgt.
"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.
Wird verwendet ResultPath , um das Ergebnis in die Eingabe einzubeziehen
Das folgende Diagramm zeigt, wie ResultPath
das Ergebnis in die Eingabe einfügen kann.
Mit der im Eine Step Functions Functions-Zustandsmaschine erstellen, die Lambda verwendet Tutorial beschriebenen State Machine 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, fügen Sie das Ergebnis der Lambda-Funktion ein und übergeben Sie dann die Kombination JSON an den nächsten Zustand. Wir könnten ResultPath
auf Folgendes setzen.
"ResultPath": "$.taskresult"
Dies beinhaltet das Ergebnis der Lambda-Funktion mit der ursprünglichen Eingabe.
{ "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ängt. taskresult
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 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
Das folgende Diagramm zeigt, wie der Wert vorhandener JSON Knoten in der Eingabe mit Werten aus dem Aufgabenergebnis aktualisiert werden ResultPath
kann.
Am Beispiel der im Eine Step Functions Functions-Zustandsmaschine erstellen, die Lambda verwendet Tutorial beschriebenen State Machine- und 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!
Anstatt die Eingabe beizubehalten und das Ergebnis als neuen Knoten in den einzufügenJSON, 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 Statuseingabe 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 Statusausgabe.
Wird verwendet ResultPath , um sowohl Fehler als auch Eingaben in eine 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: