Context-Objekt - 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.

Context-Objekt

Das Kontext-Objekt ist eine interne JSON-Struktur, die während einer Ausführung verfügbar ist und Informationen zu Ihrer Zustandsmaschine und Ausführung enthält. Auf diese Weise können Ihre Workflows auf Informationen zu ihrer spezifischen Ausführung zugreifen. Sie können über die folgenden Felder auf das Context-Objekt zugreifen:

  • InputPath

  • OutputPath

  • ItemsPath(in Kartenstaaten)

  • Variable(in den Staaten Choice)

  • ResultSelector

  • Operatoren für Vergleich von Variablen zu Variablen

Kontext-Objekt-Format

Das Kontext-Objekt enthält Informationen über den Zustandsautomaten, den Zustand, die Ausführung und die Aufgabe. Dieses JSON-Objekt enthält Knoten für jeden Typ von Daten und hat das folgende Format.

{ "Execution": { "Id": "String", "Input": {}, "Name": "String", "RoleArn": "String", "StartTime": "Format: ISO 8601" }, "State": { "EnteredTime": "Format: ISO 8601", "Name": "String", "RetryCount": Number }, "StateMachine": { "Id": "String", "Name": "String" }, "Task": { "Token": "String" } }

Während einer Ausführung erhält das Kontext-Objekt relevante Daten für das Parameters-Feld, von dem aus darauf zugegriffen wird. Der Wert für ein Task-Feld ist Null, wenn sich das Parameters-Feld außerhalb einer Aufgabe befindet.

Inhalte aus einer laufenden Ausführung enthalten Einzelheiten im folgenden Format.

{ "Execution": { "Id": "arn:aws:states:us-east-1:123456789012:execution:stateMachineName:executionName", "Input": { "key": "value" }, "Name": "executionName", "RoleArn": "arn:aws:iam::123456789012:role...", "StartTime": "2019-03-26T20:14:13.192Z" }, "State": { "EnteredTime": "2019-03-26T20:14:13.192Z", "Name": "Test", "RetryCount": 3 }, "StateMachine": { "Id": "arn:aws:states:us-east-1:123456789012:stateMachine:stateMachineName", "Name": "stateMachineName" }, "Task": { "Token": "h7XRiCdLtd/83p1E0dMccoxlzFhglsdkzpK9mBVKZsp7d9yrT1W" } }
Anmerkung

Kontextobjektdaten im Zusammenhang mit Map-Zuständen finden Sie unter Context-Objektdaten für Zuordnungszustände.

Zugriff auf das Kontext-Objekt

Um auf das Kontext-Objekt zuzugreifen, geben Sie zuerst den Parameternamen an, indem Sie am Ende .$ anhängen, wie bei der Auswahl einer Zustandseingabe mit einem Pfad. Fügen Sie dann zum Zugriff auf die Kontext-Objektdaten anstelle der Eingabe vor dem Pfad $$. ein. Dies weist AWS Step Functions an, den Pfad zu verwenden um einen Knoten in dem Kontext-Objekt auszuwählen.

Die folgenden Beispiele zeigen, wie Sie auf Kontext-Objekte wie Ausführungs-ID, Name und Startzeit zugreifen können.

Beispiel Abrufen und Übergeben des Ausführungs-Amazon-Ressourcennamen (ARN) an eine Amazon Simple Queue Service (Amazon SQS) -Nachricht

Dieses BeispielTask-Zustand verwendet einen Pfad, um den Ausführungs-Amazon-Ressourcennamen (ARN) abzurufen und an eine Amazon Simple Queue Service (Amazon SQS) -Nachricht zu übergeben.

{ "Order Flight Ticket Queue": { "Type": "Task", "Resource": "arn:aws:states:::sqs:sendMessage", "Parameters": { "QueueUrl": "https://sqs.us-east-1.amazonaws.com/123456789012/flight-purchase", "MessageBody": { "From": "YVR", "To": "SEA", "Execution.$": "$$.Execution.Id" } }, "Next": "NEXT_STATE" } }
Anmerkung

Weitere Informationen zur Verwendung eines Aufgabentokens beim Aufruf eines integrierten Service finden Sie unter Warten auf einen Callback mit dem Aufgabentoken.

Beispiel um auf die Startzeit und den Namen der Ausführung in einemPassBundesstaat

{ "Comment": "Accessing context object in a state machine", "StartAt": "Get execution context data", "States": { "Get execution context data": { "Type": "Pass", "Parameters": { "startTime.$": "$$.Execution.StartTime", "execName.$": "$$.Execution.Name" }, "ResultPath": "$.executionContext", "End": true } } }

Context-Objektdaten für Zuordnungszustände

Beim Verarbeiten eines Map-Zustands stehen zwei zusätzliche Elemente im Context-Objekt zur Verfügung: Index und Value. Für jedenMapZustandsiteration,Indexenthält die Indexnummer für das Array-Element, das gerade verarbeitet wirdValueenthält das zu verarbeitende Array-Element. Innerhalb einesMapenthält das Context-Objekt die folgenden Daten:

"Map": { "Item": { "Index": Number, "Value": "String" } }

Diese sind nur in einem Map-Zustand verfügbar und können im Parameters-Feld vor dem Abschnitt Iterator angegeben werden.

Anmerkung

Sie müssen Parameter aus dem Context-Objekt im Block Parameters des Map-Hauptzustands definieren, nicht innerhalb der Zustände im Abschnitt Iterator.

Bei einem Zustandsautomaten mit einem einfachen Map-Zustand können wir wie folgt Informationen aus dem Kontextobjekt einfügen.

{ "StartAt": "ExampleMapState", "States": { "ExampleMapState": { "Type": "Map", "Parameters": { "ContextIndex.$": "$$.Map.Item.Index", "ContextValue.$": "$$.Map.Item.Value" }, "Iterator": { "StartAt": "TestPass", "States": { "TestPass": { "Type": "Pass", "End": true } } }, "End": true } } }

Wenn Sie den vorherigen Zustandsautomaten mit der folgenden Eingabe ausführen, werden Index und Value in die Ausgabe eingefügt.

[ { "who": "bob" }, { "who": "meg" }, { "who": "joe" } ]

Die Ausgabe für die Ausführung liefert die Werte vonIndexundValueElemente für jede der drei Iterationen wie folgt:

[ { "ContextIndex": 0, "ContextValue": { "who": "bob" } }, { "ContextIndex": 1, "ContextValue": { "who": "meg" } }, { "ContextIndex": 2, "ContextValue": { "who": "joe" } } ]