Konfigurieren Sie Eingaben und Ausgaben für Ihre Bundesstaaten - 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.

Konfigurieren Sie Eingaben und Ausgaben für Ihre Bundesstaaten

Jeder Staat trifft auf der Grundlage der eingegangenen Eingaben eine Entscheidung oder führt eine Aktion durch. In den meisten Fällen leitet er dann die Ausgabe an andere Staaten weiter. In Workflow Studio können Sie auf den Registerkarten Eingabe und Ausgabe des Bedienfelds konfigurieren, wie ein Status seine Eingabe- und Ausgabedaten filtert und manipuliert. Inspector Verwenden Sie die Informationslinks, um bei der Konfiguration von Eingaben und Ausgaben auf die kontextuelle Hilfe zuzugreifen.


        Eingaben, Ausgaben und Hilfebereich

Ausführliche Informationen darüber, wie Step Functions Eingabe und Ausgabe verarbeitet, finden Sie unterEingabe- und Ausgabeverarbeitung in Step Functions.

Konfigurieren Sie die Eingabe für einen Status

Jeder Status erhält Eingaben aus dem vorherigen Status als JSON. Wenn Sie die Eingabe filtern möchten, können Sie den InputPath Filter auf der Registerkarte Eingabe im Inspector Bereich verwenden. Das InputPath ist eine Zeichenfolge, die mit beginnt $ und einen bestimmten JSON-Knoten identifiziert. Diese werden als Referenzpfade bezeichnet und folgen der JsonPath Syntax.


          Eingabeoptionen

Um die Eingabe zu filtern:

  • Wählen Sie Eingabe filtern mit InputPath.

  • Geben Sie einen JsonPathfür den InputPath Filter gültigen Wert ein. z. B. $.data.

Ihr InputPath Filter wird zu Ihrem Workflow hinzugefügt.

Beispiel 1: Verwenden Sie den InputPath Filter in Workflow Studio

Angenommen, die Eingabe für Ihren Status enthält die folgenden JSON-Daten.

{ "comment": "Example for InputPath", "dataset1": { "val1": 1, "val2": 2, "val3": 3 }, "dataset2": { "val1": "a", "val2": "b", "val3": "c" } }

Um den InputPath Filter anzuwenden, wählen Sie Eingabe filtern mit InputPath und geben Sie dann einen entsprechenden Referenzpfad ein. Wenn Sie eingeben$.dataset2.val1, wird der folgende JSON-Code als Eingabe an den Status übergeben.

{"a"}

Ein Referenzpfad kann auch eine Auswahl von Werten enthalten. Wenn es sich bei den Daten, auf die Sie verweisen, um Daten handelt { "a": [1, 2, 3, 4] } und Sie den Referenzpfad $.a[0:2] als InputPath Filter anwenden, ist das folgende Ergebnis.

[ 1, 2 ]

ParallelZuordnung, und Pass Flow-Status verfügen über eine zusätzliche Eingabefilteroption, die auf der jeweiligen Parameters Registerkarte Eingabe aufgerufen wird. Dieser Filter wird nach dem InputPath Filter wirksam und kann verwendet werden, um ein benutzerdefiniertes JSON-Objekt zu erstellen, das aus einem oder mehreren Schlüssel-Wert-Paaren besteht. Bei den Werten der einzelnen Paare kann es sich entweder um statische Werte handeln, sie können aus der Eingabe ausgewählt werden, oder sie können Context-Objekt mit einem Pfad aus dem ausgewählt werden.

Anmerkung

Um anzugeben, dass ein Parameter einen Referenzpfad verwendet, um auf einen JSON-Knoten in der Eingabe zu verweisen, muss der Parametername mit enden.$.

Beispiel 2: Erstellen Sie eine benutzerdefinierte JSON-Eingabe für den Parallel-Status

Angenommen, die folgenden JSON-Daten sind die Eingabe für einen Parallelstatus.

{ "comment": "Example for Parameters", "product": { "details": { "color": "blue", "size": "small", "material": "cotton" }, "availability": "in stock", "sku": "2317", "cost": "$23" } }

Um einen Teil dieser Eingabe auszuwählen und zusätzliche Schlüssel-Wert-Paare mit einem statischen Wert zu übergeben, können Sie im Feld Parameter auf der Registerkarte Eingabe des Status Parallel Folgendes angeben.

{ "comment": "Selecting what I care about.", "MyDetails": { "size.$": "$.product.details.size", "exists.$": "$.product.availability", "StaticValue": "foo" } }

Die folgenden JSON-Daten werden das Ergebnis sein.

{ "comment": "Selecting what I care about.", "MyDetails": { "size": "small", "exists": "in stock", "StaticValue": "foo" } }

Konfigurieren Sie die Ausgabe eines Zustands

Jeder Status erzeugt eine JSON-Ausgabe, die gefiltert werden kann, bevor sie an den nächsten Status übergeben wird. Es sind mehrere Filter verfügbar, und jeder wirkt sich auf unterschiedliche Weise auf die Ausgabe aus. Die für jeden Status verfügbaren Ausgabefilter sind auf der Registerkarte „Ausgabe“ im Inspektorfenster aufgeführt. Für Aufgabe Bundesstaaten werden alle von Ihnen ausgewählten Ausgabefilter in dieser Reihenfolge verarbeitet:

  1. ResultSelector: Verwenden Sie diesen Filter, um das Ergebnis des Status zu manipulieren. Sie können ein neues JSON-Objekt mit Teilen des Ergebnisses erstellen.

  2. ResultPath: Verwenden Sie diesen Filter, um eine Kombination aus der Statuseingabe und dem Aufgabenergebnis auszuwählen, die an die Ausgabe übergeben werden soll.

  3. OutputPath: Verwenden Sie diesen Filter, um die JSON-Ausgabe zu filtern und auszuwählen, welche Informationen aus dem Ergebnis an den nächsten Status übergeben werden.


          Optionen für die Ausgabe

Benutze ResultSelector

ResultSelectorist ein optionaler Ausgabefilter für die folgenden Staaten:

  • AufgabeStaaten, bei denen es sich ausschließlich um Staaten handelt, die auf der Registerkarte Aktionen von aufgeführt sindBundesstaaten-Browser.

  • ZuordnungStaaten, auf der Registerkarte Flow des States-Browsers.

  • ParallelStaaten, auf der Registerkarte Flow des States-Browsers.

ResultSelectorkann verwendet werden, um ein benutzerdefiniertes JSON-Objekt zu erstellen, das aus einem oder mehreren Schlüssel-Wert-Paaren besteht. Die Werte jedes Paares können entweder statische Werte sein oder aus dem Ergebnis des Zustands mit einem Pfad ausgewählt werden.

Anmerkung

Um anzugeben, dass ein Parameter einen Pfad verwendet, um auf einen JSON-Knoten im Ergebnis zu verweisen, muss der Parametername mit enden.$.

Beispiel für die Verwendung eines ResultSelector Filters

In diesem Beispiel verwenden Sie, ResultSelector um die Antwort des Amazon CreateCluster EMR-API-Aufrufs für einen Amazon CreateCluster EMR-Status zu manipulieren. Das Folgende ist das Ergebnis des Amazon CreateCluster EMR-API-Aufrufs.

{ "resourceType": "elasticmapreduce", "resource": "createCluster.sync", "output": { "SdkHttpMetadata": { "HttpHeaders": { "Content-Length": "1112", "Content-Type": "application/x-amz-JSON-1.1", "Date": "Mon, 25 Nov 2019 19:41:29 GMT", "x-amzn-RequestId": "1234-5678-9012" }, "HttpStatusCode": 200 }, "SdkResponseMetadata": { "RequestId": "1234-5678-9012" }, "ClusterId": "AKIAIOSFODNN7EXAMPLE" } }

Um einen Teil dieser Informationen auszuwählen und ein zusätzliches Schlüssel-Wert-Paar mit einem statischen Wert zu übergeben, geben Sie Folgendes in das ResultSelectorFeld auf der Registerkarte Ausgabe des Bundesstaates ein.

{ "result": "found", "ClusterId.$": "$.output.ClusterId", "ResourceType.$": "$.resourceType" }

Die Verwendung ResultSelector führt zu dem folgenden Ergebnis.

{ "result": "found", "ClusterId": "AKIAIOSFODNN7EXAMPLE", "ResourceType": "elasticmapreduce" }

Benutzen ResultPath

Die Ausgabe eines Zustands kann eine Kopie seiner Eingabe, des von ihm erzeugten Ergebnisses oder eine Kombination aus Eingabe und Ergebnis sein. Verwenden Sie ResultPath, um zu steuern, welche Kombination daraus an die Statusausgabe weitergeleitet wird. Weitere Anwendungsfälle von finden ResultPath Sie unterResultPath.

ResultPathist ein optionaler Ausgabefilter für die folgenden Zustände:

  • AufgabeStaaten, das sind alles Staaten, die auf der Registerkarte „Aktionen“ des Status-Browsers aufgeführt sind.

  • ZuordnungStaaten, auf der Registerkarte Flow des States-Browsers.

  • ParallelStaaten, auf der Registerkarte Flow des States-Browsers.

  • PassStaaten, auf der Registerkarte Flow des States-Browsers.

ResultPathkann verwendet werden, um das Ergebnis zur ursprünglichen Statuseingabe hinzuzufügen. Der angegebene Pfad gibt an, wo das Ergebnis hinzugefügt werden soll.

Beispiel für die Verwendung eines ResultPath Filters

Nehmen wir an, das Folgende ist die Eingabe für einen Task-Status.

{ "details": "Default example", "who": "AWS Step Functions" }

Das Ergebnis des Task-Status ist das Folgende.

Hello, AWS Step Functions

Sie können dieses Ergebnis zur Eingabe des Status hinzufügen, indem Sie einen Referenzpfad anwenden ResultPath und eingeben, der angibt, wo das Ergebnis hinzugefügt werden soll, z. B.$.taskresult:

Damit ResultPath ist das Folgende das JSON, das als Ausgabe des Status übergeben wird.

{ "details": "Default example", "who": "AWS Step Functions", "taskresult": "Hello, AWS Step Functions!" }

Benutze OutputPath

Mit dem OutputPath Filter können Sie unerwünschte Informationen herausfiltern und nur den Teil von JSON übergeben, der Ihnen wichtig ist. Das OutputPath ist eine Zeichenfolge, die mit beginnt $ und Knoten innerhalb von JSON-Text identifiziert.

Beispiel für die Verwendung eines OutputPath Filters

Ein Lambda Invoke-API-Aufruf gibt zusätzlich zur Nutzlast, die das Ergebnis der Lambda-Funktion ist, Metadaten zurück. Ein Beispiel für die Antwort auf diesen API-Aufruf wird auf der Registerkarte Ausgabe des Bundesstaates angezeigt.


              Bedienfeld „Ausgabe“

Sie können OutputPath es verwenden, um die zusätzlichen Metadaten herauszufiltern. Standardmäßig lautet der Wert des OutputPathFilters für Lambda Invoke-Zustände, die mit dem Workflow Studio erstellt wurden. $.Payload Dieser Standardwert entfernt die zusätzlichen Metadaten und gibt eine Ausgabe zurück, die der direkten Ausführung der Lambda-Funktion entspricht.

Das Beispiel für das Ergebnis der Lambda-Invoke-Aufgabe und der Wert von $.Payload für den Ausgabefilter übergeben die folgenden JSON-Daten als Ausgabe.

{ "foo": "bar", "colors": [ "red", "blue", "green" ], "car": { "year": 2008, "make": "Toyota", "model": "Matrix" } }
Anmerkung

Da der OutputPath Filter der letzte Ausgabefilter ist, der wirksam wird, sollten Sie, wenn Sie zusätzliche Ausgabefilter wie ResultSelector oder verwendenResultPath, den Standardwert von $.Payload für den OutputPath Filter entsprechend ändern.