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 Kontextobjekt ist eine interne JSON Struktur, die während einer Ausführung verfügbar ist und Informationen über Ihre Zustandsmaschine und die 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 Kontextobjekt zugreifen:

  • InputPath

  • OutputPath

  • ItemsPath(in Kartenstaaten)

  • Variable(in den Staaten Choice)

  • ResultSelector

  • Parameters

  • Operatoren für den 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 Datentyp und hat das folgende Format.

{ "Execution": { "Id": "String", "Input": {}, "Name": "String", "RoleArn": "String", "StartTime": "Format: ISO 8601", "RedriveCount": Number, "RedriveTime": "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.

Der Wert des RedriveCount Kontextobjekts ist 0, falls Sie dies noch nicht getan haben redriveneine Hinrichtung. Außerdem ist das RedriveTime Kontextobjekt nur verfügbar, wenn Sie redriven eine Hinrichtung. Wenn du redriven a Map Run, das RedriveTime Kontextobjekt ist nur für untergeordnete Workflows vom Typ Standard verfügbar. Für ein redriven Map Run mit untergeordneten Workflows vom Typ Express RedriveTime ist nicht verfügbar.

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. Das sagt AWS Step Functions um den Pfad zu verwenden, um einen Knoten im Kontextobjekt auszuwählen.

Die folgenden Beispiele zeigen, wie Sie auf Kontextobjekte wie Ausführungs-ID, Name, Startzeit und zugreifen können redrive zählen.

Rufen Sie die Ausführung ab und leiten ARN Sie sie an einen nachgeschalteten Dienst weiter

Dieses Beispiel für den Aufgabenstatus verwendet einen Pfad, um die Ausführung des Amazon Resource Name (ARN) abzurufen und an eine Amazon Simple Queue Service (AmazonSQS) -Nachricht weiterzuleiten.

{ "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" } }

Weitere Informationen zur Verwendung eines Aufgabentokens beim Aufruf eines integrierten Service finden Sie unter Warten Sie auf einen Rückruf mit Task Token.

Greifen Sie im Status Pass auf die Startzeit und den Namen der Ausführung zu

{ "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 } } }

Greifen Sie auf den redrive Anzahl einer Hinrichtung

Das folgende Beispiel für eine Aufgabenstatusdefinition zeigt, wie Sie auf die zugreifen können redriveAnzahl einer Ausführung.

{ "Type": "Task", "Resource": "arn:aws:states:::lambda:invoke", "OutputPath": "$.Payload", "Parameters": { "Payload": { "Number.$": "$$.Execution.RedriveCount" }, "FunctionName": "arn:aws:lambda:us-east-2:123456789012:function:functionName" }, "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. IndexEnthält für jede Map State-Iteration die Indexnummer für das Array-Element, das gerade verarbeitet wird, und Value enthält gleichzeitig das Array-Element, das gerade verarbeitet wird. Innerhalb eines Map Zustands enthält das Kontextobjekt die folgenden Daten:

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

Diese sind nur in einem Map Bundesstaat verfügbar und können im ItemSelector (Karte) Feld angegeben werden.

Anmerkung

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

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", "ItemSelector": { "ContextIndex.$": "$$.Map.Item.Index", "ContextValue.$": "$$.Map.Item.Value" }, "ItemProcessor": { "ProcessorConfig": { "Mode": "INLINE" }, "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 gibt die Werte Index und Value Elemente für jede der drei Iterationen wie folgt zurück:

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