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.
Zugreifen auf Ausführungsdaten aus dem Context-Objekt in Step Functions
Status verwalten und Daten transformieren
Step Functions hat kürzlich Variablen hinzugefügt und JSONata dient der Verwaltung von Zustands- und Transformationsdaten.
Erfahren Sie mehr über das Übergeben von Daten mit Variablen und das Transformieren von Daten mit JSONata.
Das Context-Objekt 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. Der Kontext stellt Ihren Workflows Informationen über deren spezifische Ausführung zur Verfügung. Ihre Workflows können das Context-Objekt in einem JSONata Ausdruck mit referenzieren$states.context
.
Zugreifen auf das Context-Objekt
Um auf das Context-Objekt zuzugreifen in JSONata
Um in JSONata Zuständen auf das Context-Objekt zuzugreifen, verwenden Sie es $states.context
in einem JSONata Ausdruck.
{
"ExecutionID" : "{% $states.context.Execution.Id %}"
}
Um auf das Context-Objekt zuzugreifen in JSONPath
Um auf das Context-Objekt in zuzugreifenJSONPath, fügen Sie es zunächst .$
an das Ende des Schlüssels an, um anzugeben, dass es sich bei dem Wert um einen Pfad handelt. Stellen Sie dann dem Wert ein, $$.
um einen Knoten im Context-Objekt auszuwählen.
{
"ExecutionID.$": "$$.Execution.Id"
}
JSONPathStaaten können aus den folgenden JSONPath Feldern auf den Kontext ($$.
) verweisen:
-
InputPath
-
OutputPath
-
ItemsPath
(in Kartenstaaten) -
Variable
(in den Staaten Choice) -
ResultSelector
-
Parameters
-
Operatoren für den Vergleich von Variablen zu Variablen
Felder für Kontextobjekte
Das Context-Objekt enthält Informationen über die Zustandsmaschine, den Status, 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 wird das Context-Objekt mit relevanten Daten gefüllt. RedriveTime
Das Kontextobjekt ist 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
Informationen zu Kontextobjekten, die sich auf Map
Bundesstaaten beziehen, finden Sie unterKontextobjektdaten für Kartenstatus.
Kontextobjektdaten für Kartenstatus
Status verwalten und Daten transformieren
Step Functions hat kürzlich Variablen hinzugefügt und JSONata dient der Verwaltung von Zustands- und Transformationsdaten.
Erfahren Sie mehr über das Übergeben von Daten mit Variablen und das Transformieren von Daten mit JSONata.
Bei der Verarbeitung eines MapZustands sind im Context-Objekt zwei zusätzliche Elemente verfügbar: Index
undValue
. Index
Enthält für jede Map
Status-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 Context-Objekt 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 ItemSelector
Block des Map
Hauptstatus definieren, nicht innerhalb der im ItemProcessor
Abschnitt enthaltenen Staaten.
Bei einer Zustandsmaschine, die einen JSONPath Map
Status verwendet, können Sie Informationen aus dem Context-Objekt wie folgt 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
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"
}
}
]