Workflow-Eingabe und -Ausgabe in Step Functions konfigurieren - 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.

Workflow-Eingabe und -Ausgabe in Step Functions konfigurieren

Im vorherigen Thema haben Sie gelerntFühren Sie Ihren Workflow aus , wie Sie Ihren Workflow ausführen. In diesem Thema erfahren Sie, wie Sie Daten auswählen, filtern und bearbeiten, während sie zwischen verschiedenen Zuständen übertragen werden.

Eine Step Functions Functions-Ausführung empfängt JSON Text als Eingabe und leitet diese Eingabe an den ersten Status im Workflow weiter. Einzelne Status in einem Workflow empfangen JSON Daten als Eingabe und geben JSON Daten normalerweise als Ausgabe an den nächsten Status weiter. Standardmäßig werden Daten von einem Status zum nächsten im Workflow übertragen, sofern Sie die Eingabe und/oder Ausgabe nicht konfiguriert haben. Zu verstehen, wie die Informationen von einem Bundesstaat in einen anderen fließen, und zu lernen, wie diese Daten gefiltert und bearbeitet werden können, ist der Schlüssel zur effektiven Gestaltung und Implementierung von Workflows in Step Functions.

Step Functions bietet die folgenden Filter, um den Eingabe- und Ausgabedatenfluss zwischen Staaten zu steuern:

Anmerkung

Je nach Anwendungsfall müssen Sie möglicherweise nicht alle diese Filter in Ihren Workflows anwenden.

InputPath

Wählt WHATeinen Teil der gesamten Eingabe-Payload aus, der als Eingabe für eine Aufgabe verwendet werden soll. Wenn Sie dieses Feld angeben, wendet Step Functions dieses Feld zuerst an.

Parameter

Gibt an, wie HOWdie Eingabe aussehen soll, bevor die Aufgabe aufgerufen wird. Mit dem Parameters Feld können Sie eine Sammlung von Schlüssel-Wert-Paaren erstellen, die als Eingabe an eine übergeben werden AWS-Service Integration, wie z. B. ein AWS Lambda Funktion. Diese Werte können statisch sein oder dynamisch entweder aus der Statuseingabe oder dem Workflow-Kontextobjekt ausgewählt werden.

ResultSelector

Legt fest WHAT, ob aus der Ausgabe einer Aufgabe ausgewählt werden soll. Mit dem ResultSelector Feld können Sie eine Sammlung von Schlüssel-Wert-Paaren erstellen, die das Ergebnis eines Bundesstaates ersetzen, und diese Sammlung an diese Sammlung übergeben. ResultPath

Zustandsausgabe mithilfe von Workflows ResultPath in Step Functions angeben

Legt fest WHERE, ob die Ausgabe einer Aufgabe erstellt werden soll. Verwenden Sie dieResultPath, um zu ermitteln, ob es sich bei der Ausgabe eines Status um eine Kopie seiner Eingabe, des von ihm erzeugten Ergebnisses oder um eine Kombination aus beidem handelt.

Filtern der Statusausgabe mithilfe von Workflows OutputPath in Step Functions

Legt fest WHAT, dass an den nächsten Status gesendet werden soll. Mit OutputPath können Sie unerwünschte Informationen herausfiltern und nur den Teil der JSON Daten weitergeben, der Ihnen wichtig ist.

Tipp

Die ResultSelector Filter Parameters und funktionieren durch KonstruierenJSON, wohingegen die OutputPath Filter InputPath und bestimmte Knoten innerhalb eines JSON Datenobjekts filtern und der ResultPath Filter ein Feld erstellt, unter dem die Ausgabe hinzugefügt werden kann.

Weitere Informationen zur Konfiguration von Eingabe und Ausgabe in Ihren Workflows finden Sie unterEingabe und Ausgabe in Step Functions verarbeiten.

Wählen Sie mithilfe des Filters bestimmte Teile der Roheingabe aus InputPath

Verwenden Sie den InputPath Filter, um einen bestimmten Teil der Eingabe-Payload auszuwählen.

Wenn Sie keinen Wert angebenInputPath, wird der Standardwert auf eingestellt$, was dazu führt, dass sich die Aufgabe des Status auf die gesamte Roheingabe bezieht und nicht auf einen bestimmten Teil.

Schritt 1: Erstellen Sie eine Zustandsmaschine

Wichtig

Stellen Sie sicher, dass sich Ihr Zustandsmaschine unter demselben befindet AWS Konto und Region als Lambda-Funktion, die Sie zuvor erstellt haben.

  1. Verwenden Sie das Parallel State-Beispiel, das Sie in Tutorial 4 kennengelernt haben, um eine neue Zustandsmaschine zu erstellen. Stellen Sie sicher, dass Ihr Workflow-Prototyp dem folgenden Prototyp ähnelt.

  2. Konfigurieren Sie die Integrationen für die Funktionen check-identity und check-address Lambda. Hinweise zum Erstellen der Lambda-Funktionen und deren Verwendung in Ihrer Zustandsmaschine finden Sie unter Schritt 1: Erstellen Sie die Lambda-Funktionen, um die erforderlichen Prüfungen durchzuführen undSchritt 2: Aktualisieren Sie den Workflow — Fügen Sie parallel Aufgaben hinzu, die ausgeführt werden sollen.

  3. Stellen Sie sicher, dass Sie für Payload die Standardauswahl „Statuseingabe als Nutzlast verwenden“ beibehalten.

  4. Wählen Sie Weiter und führen Sie dann die Schritte 1 bis 3 in Tutorial 5 Schritt 1: Speichern Sie die Zustandsmaschine aus, um eine neue Zustandsmaschine zu erstellen. Benennen Sie für dieses Tutorial Ihre ZustandsmaschineWorkflowInputOutput.

Schritt 2: Führen Sie die Zustandsmaschine aus

  1. Wählen Sie auf der WorkflowInputOutputSeite Ausführung starten aus.

  2. (Optional) Geben Sie einen benutzerdefinierten Ausführungsnamen ein, um den generierten Standard zu überschreiben.

    ASCIINichtnamen und Protokollierung

    Step Functions akzeptiert Namen für Zustandsmaschinen, Ausführungen, Aktivitäten und Bezeichnungen, die ASCII Nichtzeichen enthalten. Da solche Zeichen nicht mit Amazon funktionieren, empfehlen wir CloudWatch, nur ASCII Zeichen zu verwenden, damit Sie die Messwerte verfolgen können CloudWatch.

  3. Fügen Sie im Eingabebereich die folgenden JSON Daten als Ausführungseingabe hinzu.

    { "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" } } }
  4. Wählen Sie Start execution (Ausführung starten) aus.

  5. Die Ausführung der Zustandsmaschine führt zu einem Fehler, da Sie nicht angegeben haben, welche Teile der Ausführungseingabe die Funktionen check-identity und check-address Lambda-Funktionen verwenden müssen, um die erforderliche Identitäts- und Adressprüfung durchzuführen.

  6. Fahren Sie mit Schritt 3 dieses Tutorials fort, um den Fehler zu beheben.

Schritt 3: Verwenden Sie den InputPath Filter, um bestimmte Teile einer Ausführungseingabe auszuwählen

  1. Wählen Sie auf der Seite mit den Ausführungsdetails die Option Zustandsmaschine bearbeiten aus.

  2. Um die Identität des Antragstellers zu überprüfen, wie in der Ausführungseingabe unter angegebenSchritt 2: Führen Sie die Zustandsmaschine aus, bearbeiten Sie die Aufgabendefinition „Identität verifizieren“ wie folgt:

    ... { "StartAt": "Verify identity", "States": { "Verify identity": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "InputPath": "$.data.identity", "Parameters": { "Payload.$": "$", "FunctionName": "arn:aws:lambda:us-east-2:123456789012:function:check-identity:$LATEST" }, "End": true } } } ...

    Folglich stehen die folgenden JSON Daten als Eingabe für die check-identity Funktion zur Verfügung.

    { "email": "jdoe@example.com", "ssn": "123-45-6789" }
  3. Um die in der Ausführungseingabe angegebene Adresse des Bewerbers zu überprüfen, bearbeiten Sie die Verify address Aufgabendefinition wie folgt:

    ... { "StartAt": "Verify address", "States": { "Verify address": { "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "InputPath": "$.data.address", "Parameters": { "Payload.$": "$", "FunctionName": "arn:aws:lambda:us-east-1:123456789012:function:check-address:$LATEST" }, "End": true } } } ...

    Folglich stehen die folgenden JSON Daten als Eingabe für die check-address Funktion zur Verfügung.

    { "street": "123 Main St", "city": "Columbus", "state": "OH", "zip": "43219" }
  4. Wählen Sie Start execution (Ausführung starten) aus. Die Ausführung der Zustandsmaschine wird jetzt erfolgreich abgeschlossen.

Bearbeiten Sie die ausgewählte Eingabe mithilfe des Parameterfilters

Der InputPath Filter hilft Ihnen zwar dabei, die von Ihnen JSON bereitgestellte Roheingabe einzuschränken, aber mit dem Parameters Filter können Sie eine Sammlung von Schlüssel-Wert-Paaren als Eingabe übergeben. Bei diesen Schlüssel-Wert-Paaren kann es sich entweder um statische Werte handeln, die Sie in Ihrer State-Machine-Definition definieren, oder um Werte, die mithilfe von aus der Roheingabe ausgewählt wurden. InputPath

In Ihren Workflows Parameters werden sie danach angewendet. InputPath Parametershilft Ihnen dabei, festzulegen, wie die zugrunde liegende Aufgabe ihre Eingabe-Payload akzeptiert. Wenn die check-address Lambda-Funktion beispielsweise anstelle der JSON Daten einen Zeichenkettenparameter als Eingabe akzeptiert, können Sie den Parameters Filter verwenden, um die Eingabe zu transformieren.

Im folgenden Beispiel empfängt der Parameters Filter die Eingabe, die Sie mit InputPath in ausgewählt haben, Schritt 3: Verwenden Sie den InputPath Filter, um bestimmte Teile einer Ausführungseingabe auszuwählen und wendet die systeminterne Funktion States.Format auf die Eingabeelemente an, um eine Zeichenfolge namens zu erstellen. addressString Systeminterne Funktionen helfen Ihnen dabei, grundlegende Datenverarbeitungsvorgänge für eine bestimmte Eingabe durchzuführen. Weitere Informationen finden Sie unter Intrinsische Funktionen in Amazon States Language for Step Functions Functions-Workflows.

"Parameters": { "addressString.$": "States.Format('{}. {}, {} - {}', $.street, $.city, $.state, $.zip)" }

Folglich wird die folgende Zeichenfolge erstellt und der check-address Lambda-Funktion als Eingabe zur Verfügung gestellt.

{ "addressString": "123 Main St. Columbus, OH - 43219" }

Konfigurieren Sie die Ausgabe mithilfe der ResultSelector Filter ResultPath, und OutputPath

Wenn die check-address Lambda-Funktion in der WorkflowInputOutputZustandsmaschine aufgerufen wird, gibt die Funktion nach der Adressüberprüfung eine Ausgangsnutzlast zurück. Wählen Sie auf der Seite mit den Ausführungsdetails den Schritt Adresse verifizieren aus und sehen Sie sich die Ausgabe-Payload im Task-Ergebnis im Bereich an. Einzelheiten zu den Schritten

{ "ExecutedVersion": "$LATEST", "Payload": { "statusCode": 200, "body": "{\"approved\":true,\"message\":\"identity validation passed\"}" }, "SdkHttpMetadata": { "AllHttpHeaders": { "X-Amz-Executed-Version": [ "$LATEST" ], ... ... "StatusCode": 200 }

Verwenden ResultSelector

Wenn Sie das Ergebnis der Identitäts- und Adressprüfung für die folgenden Bundesstaaten in Ihrem Workflow bereitstellen müssen, können Sie den Knoten Payload.Body in der Ausgabe auswählen JSON und die StringToJson systeminterne Funktion im ResultSelector Filter verwenden, um die Daten nach Bedarf zu formatieren.

ResultSelectorwählt aus der Aufgabenausgabe aus, was benötigt wird. Im folgenden Beispiel wird die Zeichenfolge in $.payload.Body verwendet und die States.StringToJson systeminterne Funktion angewendet, um die Zeichenfolge in den Identitätsknoten zu konvertieren und das Ergebnis innerhalb des Identitätsknotens zu JSON platzieren. ResultSelector JSON

"ResultSelector": { "identity.$": "States.StringToJson($.Payload.body)" }

Folglich werden die folgenden Daten erstellt. JSON

{ "identity": { "approved": true, "message": "Identity validation passed" } }

Bei der Arbeit mit diesen Eingabe- und Ausgabefiltern treten möglicherweise Laufzeitfehler auf, die auf ungültige JSONpath Ausdrücke zurückzuführen sind.

Verwenden ResultPath

Mithilfe des ResultPath Felds können Sie einen Speicherort in der ursprünglichen Eingabe-Payload angeben, um das Ergebnis der Aufgabenverarbeitung eines Bundesstaates zu speichern. Wenn Sie keinen Wert angebenResultPath, wird der Wert standardmäßig auf festgelegt. $ Dadurch wird die ursprüngliche Eingabe-Payload durch das Rohergebnis der Aufgabe ersetzt. Wenn Sie ResultPath als angebennull, wird das Rohergebnis verworfen und die ursprüngliche Eingabe-Payload wird zur effektiven Ausgabe.

Wenn Sie das ResultPath Feld auf die mit dem ResultSelector Feld erstellten JSON Daten anwenden, wird das Aufgabenergebnis im Ergebnisknoten der Eingabe-Payload hinzugefügt, wie im folgenden Beispiel gezeigt:

{ "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" }, "results": { "identity": { "approved": true } } }

Verwenden OutputPath

Sie können einen Teil der Statusausgabe nach der Anwendung von auswählenResultPath, um zum nächsten Status überzugehen. Mit diesem Ansatz können Sie unerwünschte Informationen herausfiltern und nur den Teil weitergebenJSON, den Sie benötigen.

Im folgenden Beispiel speichert das OutputPath Feld die Statusausgabe im Ergebnisknoten:"OutputPath": "$.results". Folglich lautet die endgültige Ausgabe des Status, die Sie an den nächsten Status übergeben können, wie folgt:

{ "addressResult": { "approved": true, "message": "address validation passed" }, "identityResult": { "approved": true, "message": "identity validation passed" } }

Verwendung von Konsolenfunktionen zur Visualisierung der Eingabe- und Ausgabedatenflüsse

Sie können den Eingabe- und Ausgabedatenfluss zwischen den Zuständen in Ihren Workflows mithilfe des Datenflusssimulators oder der Option Erweiterte Ansicht auf der Seite mit den Ausführungsdetails der Step Functions Functions-Konsole visualisieren.

Bearbeiten Sie die ausgewählte Eingabe mithilfe des Parameterfeldes

Das InputPath Feld hilft Ihnen zwar dabei, die von Ihnen JSON bereitgestellte Roheingabe einzuschränken, aber mit dem Parameters Feld können Sie eine Sammlung von Schlüssel-Wert-Paaren als Eingabe übergeben. Bei diesen Schlüssel-Wert-Paaren kann es sich entweder um statische Werte handeln, die Sie in Ihrer State-Machine-Definition definieren, oder um Werte, die mithilfe von aus der Roheingabe ausgewählt wurden. InputPath

In Ihren Workflows Parameters werden sie danach angewendet. InputPath Parametershilft Ihnen dabei, festzulegen, wie die zugrunde liegende Aufgabe ihre Eingabe-Payload akzeptiert. Stellen Sie sich beispielsweise vor, dass die check-address Lambda-Funktion anstelle der JSON Daten einen Zeichenkettenparameter als Eingabe akzeptiert. Sie können das Parameters Feld verwenden, um die Eingabe zu transformieren.

Im folgenden Beispiel empfängt das Parameters Feld die Eingabe, die Sie InputPath im Wählen Sie mithilfe des Filters bestimmte Teile der Roheingabe aus InputPath Abschnitt ausgewählt haben, und wendet die systeminterne Funktion States.Format auf die Eingabeelemente an, um eine Zeichenfolge namens zu erstellen. addressString Systeminterne Funktionen helfen Ihnen dabei, grundlegende Datenverarbeitungsvorgänge für eine bestimmte Eingabe durchzuführen. Weitere Informationen finden Sie unter Intrinsische Funktionen.

"Parameters": { "addressString.$": "States.Format('{}. {}, {} - {}', $.street, $.city, $.state, $.zip)" }

Folglich wird die folgende Zeichenfolge erstellt und der Lambda-Funktion checkaddress als Eingabe zur Verfügung gestellt.

Anmerkung

Wenn Sie Ihre Eingabe anhand dieses Beispiels aktualisieren und die Zustandsmaschine ausführen, wird ein Fehler zurückgegeben, da die Lambda-Funktion die Eingabe im aktualisierten Format nicht akzeptiert.

{ "addressString.$": "123 Main St. Columbus, OH - 43219" }

Nächste Schritte

Im letzten Thema erfahren SieFehler debuggen, wie Sie Fehler in Ihren Step Functions Functions-Workflows debuggen.