InputPath,ResultPath, und OutputPath Beispiele - 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.

InputPath,ResultPath, und OutputPath Beispiele

Jeder andere Staat als ein Fehler Bundesstaat oder ein Succeed Bundesstaat kann die Eingabe- und Ausgabeverarbeitungsfelder wie InputPathResultPath, oder enthaltenOutputPath. Darüber hinaus unterstützen Wait die Choice Land-Staaten das ResultPath Feld nicht. Mit diesen Feldern können Sie a verwenden, JsonPathum die JSON-Daten zu filtern, während sie sich in Ihrem Workflow bewegen.

Sie können das Parameters Feld auch verwenden, um die JSON-Daten zu manipulieren, während sie sich in Ihrem Workflow bewegen. Für weitere Informationen zur Nutzung von Parameters siehe InputPath, Parameter und ResultSelector.

Beispiel: Beginnen Sie mit der AWS Lambda-Funktion und dem Zustandsautomaten, die in der Eine Step Functions Functions-Zustandsmaschine erstellen, die Lambda verwendet-Anleitung beschrieben sind. Ändern Sie den Zustandsautomaten so, dass er InputPath, ResultPath und OutputPath enthält.

{ "Comment": "A Hello World example of the Amazon States Language using an AWS Lambda function", "StartAt": "HelloWorld", "States": { "HelloWorld": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:HelloFunction", "InputPath": "$.lambda", "ResultPath": "$.data.lambdaresult", "OutputPath": "$.data", "End": true } } }

Starten einer Ausführung mit der folgenden Eingabe.

{ "comment": "An input comment.", "data": { "val1": 23, "val2": 17 }, "extra": "foo", "lambda": { "who": "AWS Step Functions" } }

Gehen wir davon aus, dass die extra Knoten comment und verworfen werden können, wir aber die Ausgabe der Lambda-Funktion einbeziehen und die Informationen im Knoten beibehalten möchten. data

Im aktualisierten Zustandsautomaten wird der Task-Zustand geändert, damit die Aufgabeneingabe verarbeitet wird.

"InputPath": "$.lambda",

Diese Zeile in der Definition des Zustandsautomaten begrenzt die Aufgabeneingabe ausschließlich auf lambda-Knoten aus der Statuseingabe. Die Lambda-Funktion empfängt nur das JSON-Objekt {"who": "AWS Step Functions"} als Eingabe.

"ResultPath": "$.data.lambdaresult",

Dies ResultPath weist die State-Maschine an, das Ergebnis der Lambda-Funktion in einen Knoten mit dem Namen einzufügenlambdaresult, und zwar als untergeordnetes Element des data Knotens in der ursprünglichen State-Machine-Eingabe. Da wir keine weiteren Manipulationen an der ursprünglichen Eingabe vornehmen und das Ergebnis verwendenOutputPath, enthält die Ausgabe des Status jetzt das Ergebnis der Lambda-Funktion mit der ursprünglichen Eingabe.

{ "comment": "An input comment.", "data": { "val1": 23, "val2": 17, "lambdaresult": "Hello, AWS Step Functions!" }, "extra": "foo", "lambda": { "who": "AWS Step Functions" } }

Unser Ziel war es jedoch, nur den data Knoten beizubehalten und das Ergebnis der Lambda-Funktion einzubeziehen. OutputPathfiltert dieses kombinierte JSON, bevor es an die State-Ausgabe übergeben wird.

"OutputPath": "$.data",

Dadurch wird nur der data-Knoten aus der ursprünglichen Eingabe (einschließlich des untergeordneten lambdaresult-Elements, das von ResultPath eingefügt wurde) für die Weiterleitung an die Ausgabe ausgewählt. Die Statusausgabe wird auf Folgende Weise gefiltert:

{ "val1": 23, "val2": 17, "lambdaresult": "Hello, AWS Step Functions!" }

In diesem Task-Status:

  1. InputPathsendet nur den lambda Knoten von der Eingabe an die Lambda-Funktion.

  2. ResultPath fügt das Ergebnis als untergeordnetes Element des data-Knotens in die ursprünglichen Eingabe ein.

  3. OutputPathfiltert die Zustandseingabe (die jetzt das Ergebnis der Lambda-Funktion enthält), sodass nur der data Knoten an die Statusausgabe weitergegeben wird.

Beispiel um Maschineneingabe, Ergebnis und Endausgabe im Originalzustand zu manipulieren, indem JsonPath

Stellen Sie sich die folgende staatliche Maschine vor, die die Identität und Adresse eines Versicherungsantragstellers überprüft.

Anmerkung

Das vollständige Beispiel finden Sie unter How to use JSON Path in Step Functions.

{ "Comment": "Sample state machine to verify an applicant's ID and address", "StartAt": "Verify info", "States": { "Verify info": { "Type": "Parallel", "End": true, "Branches": [ { "StartAt": "Verify identity", "States": { "Verify identity": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "Parameters": { "Payload.$": "$", "FunctionName": "arn:aws:lambda:us-east-2:111122223333:function:check-identity:$LATEST" }, "End": true } } }, { "StartAt": "Verify address", "States": { "Verify address": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "Parameters": { "Payload.$": "$", "FunctionName": "arn:aws:lambda:us-east-2:111122223333:function:check-address:$LATEST" }, "End": true } } } ] } } }

Wenn Sie diese State-Maschine mit der folgenden Eingabe ausführen, schlägt die Ausführung fehl, da die Lambda-Funktionen, die die Überprüfung durchführen, nur die Daten erwarten, die als Eingabe verifiziert werden müssen. Daher müssen Sie die Knoten angeben, die die zu überprüfenden Informationen enthalten, indem Sie einen entsprechenden Knoten verwendenJsonPath.

{ "data": { "firstname": "Jane", "lastname": "Doe", "identity": { "email": "jdoe@example.com", "ssn": "123-45-6789" }, "address": { "street": "123 Main St", "city": "Columbus", "state": "OH", "zip": "43219" }, "interests": [ { "category": "home", "type": "own", "yearBuilt": 2004 }, { "category": "boat", "type": "snowmobile", "yearBuilt": 2020 }, { "category": "auto", "type": "RV", "yearBuilt": 2015 }, ] } }

Um den Knoten anzugeben, den die check-identity Lambda-Funktion verwenden muss, verwenden Sie das InputPath Feld wie folgt:

"InputPath": "$.data.identity"

Und um den Knoten anzugeben, den die check-address Lambda-Funktion verwenden muss, verwenden Sie das InputPath Feld wie folgt:

"InputPath": "$.data.address"

Wenn Sie nun das Überprüfungsergebnis in der Maschineneingabe im Originalzustand speichern möchten, verwenden Sie das ResultPath Feld wie folgt:

"ResultPath": "$.results"

Wenn Sie jedoch nur die Identitäts- und Überprüfungsergebnisse benötigen und die ursprüngliche Eingabe verwerfen, verwenden Sie das OutputPath Feld wie folgt:

"OutputPath": "$.results"

Weitere Informationen finden Sie unter Eingabe- und Ausgabeverarbeitung in Step Functions.