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 Ihren Zustandsautomaten 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 Map-Zuständen) -
Variable
(in Choice-Zuständen) -
ResultSelector
Parameters
-
Operatoren von Variablen zu Variablenvergleich
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
",
"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, wenn Sie noch keine redriven Ausführung haben. Darüber hinaus ist das RedriveTime
Kontextobjekt nur verfügbar, wenn Sie redriven eine Ausführung haben. Wenn Sie habenredriven a Map Run, ist das RedriveTime
Kontextobjekt nur für untergeordnete Workflows vom Typ Standard verfügbar. Für eine redriven Map-Ausführung 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. Dadurch wird angewiesen AWS Step Functions , den Pfad zur Auswahl eines Knotens im Kontextobjekt zu verwenden.
Die folgenden Beispiele zeigen, wie Sie auf Kontextobjekte wie Ausführungs-ID, Name, Startzeit und redrive Anzahl zugreifen können.
Abrufen und Übergeben des Ausführungs-ARN an einen Downstream-Service
In diesem Beispiel für Aufgabenstatus wird ein Pfad verwendet, um den Amazon-Ressourcennamen (ARN) der Ausführung 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"
}
}
Weitere Informationen zur Verwendung eines Aufgabentokens beim Aufruf eines integrierten Service finden Sie unter Warten auf einen Callback mit dem Aufgabentoken.
Zugriff auf die Startzeit und den Namen der Ausführung im Status „Bestanden“
{ "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 } } }
Zugriff auf die redrive Anzahl einer Ausführung
Das folgende Beispiel für eine Aufgabenstatusdefinition zeigt, wie Sie auf die redrive Anzahl einer Ausführung zugreifen können.
{ "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
. Für jede Map
Statusiteration Index
enthält die Indexnummer für das Array-Element, das derzeit verarbeitet wird, während das Array-Element Value
enthält, das 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
Zustand verfügbar und können im -ItemSelector
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 von Index
und Value
Elementen 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"
}
}
]