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
. Index
Enthä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"
}
}
]