Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.
Accesso ai dati di esecuzione dall'oggetto Context in Step Functions
Gestione dello stato e trasformazione dei dati
Scopri come passare dati tra stati con variabili e Trasformare dati con. JSONata
L'oggetto Context è una struttura JSON interna disponibile durante l'esecuzione e contiene informazioni sulla macchina a stati e sull'esecuzione. Il contesto fornisce ai flussi di lavoro informazioni sulla loro esecuzione specifica. I flussi di lavoro possono fare riferimento all'oggetto Context in un' JSONata espressione con. $states.context
Accesso all'oggetto Context
Per accedere all'oggetto Context in JSONata
Per accedere all'oggetto Context negli JSONata stati, $states.context utilizzatelo in un' JSONata espressione.
{
"ExecutionID" : "{% $states.context.Execution.Id %}"
}
Per accedere all'oggetto Context in JSONPath
Per accedere all'oggetto Context in JSONPath, aggiungete innanzitutto .$ alla fine della chiave per indicare che il valore è un percorso. Quindi, anteponi al valore $$. per selezionare un nodo nell'oggetto Context.
{
"ExecutionID.$": "$$.Execution.Id"
}
JSONPath gli stati possono fare riferimento al context ($$.) dai seguenti campi: JSONPath
-
InputPath -
OutputPath -
ItemsPath(negli stati della mappa) -
Variable(negli stati Choice) -
ResultSelector -
Parameters -
Operatori di confronto da variabile a variabile
Campi oggetto contestuali
L'oggetto Context include informazioni sulla macchina a stati, sullo stato, sull'esecuzione e sull'attività. L'oggetto Context JSON include nodi per ogni tipo di dati nel seguente formato:
{
"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"
}
}
Durante un'esecuzione, l'oggetto Context viene popolato con i dati pertinenti.
Occasionalmente, vengono aggiunti nuovi campi al contesto. Se stai elaborando direttamente il contesto JSON, ti consigliamo di creare codice in grado di gestire senza problemi nuovi campi sconosciuti. Ad esempio, se utilizzi la libreria Jackson per demarshalling di JSON, ti consigliamo di impostarlo su in your per evitare un. FAIL_ON_UNKNOWN_PROPERTIES false ObjectMapper UnrecognizedPropertyException
RedriveTimeL'oggetto Context è disponibile solo se hai un'esecuzione. redriven In caso redriven a Map Runaffermativo, l'oggetto RedriveTime contestuale è disponibile solo per i flussi di lavoro secondari di tipo Standard. Per un redriven Map Run con flussi di lavoro secondari di tipo Express, non RedriveTime è disponibile.
Il contenuto di un'esecuzione in esecuzione include specifiche nel seguente formato:
{
"Execution": {
"Id": "arn:aws:states:region:123456789012:execution:stateMachineName:executionName",
"Input": {
"key": "value"
},
"Name": "executionName",
"RoleArn": "arn:aws:iam::123456789012:role...",
"StartTime": "2025-08-27T10:04:42Z"
},
"State": {
"EnteredTime": "2025-08-27T10:04:42.001Z",
"Name": "Test",
"RetryCount": 3
},
"StateMachine": {
"Id": "arn:aws:states:region:123456789012:stateMachine:stateMachineName",
"Name": "stateMachineName"
},
"Task": {
"Token": "h7XRiCdLtd/83p1E0dMccoxlzFhglsdkzpK9mBVKZsp7d9yrT1W"
}
}
Formato timestamp con frazioni di secondo
Step Functions segue la specifica ISO86 01 che afferma che l'output può essere composto da zero, tre, sei o nove cifre, se necessario. Quando un timestamp ha zero secondi frazionari, Step Functions rimuove gli zeri finali anziché riempire l'output.
Se crei codice che utilizza i timestamp di Step Functions, il codice deve essere in grado di elaborare un numero variabile di secondi frazionari.
Dati contestuali degli oggetti per gli stati della mappa
Gestione dello stato e trasformazione dei dati
Scopri come passare dati tra stati con variabili e Trasformare dati con. JSONata
Durante l'elaborazione di uno Mapstato, il contesto conterrà anche IndexValue, eSource.
Per ogni iterazione di Map stato, Index contiene il numero di indice dell'elemento dell'array attualmente in fase di elaborazione, Value contiene l'elemento dell'array in fase di elaborazione e Source sarà il valore InputType diCSV, JSONJSONL, oPARQUET.
All'interno di uno Map stato, l'oggetto Context include i seguenti dati:
"Map": {
"Item": {
"Index" : Number,
"Key" : "String", // Only valid for JSON objects
"Value" : "String",
"Source": "String"
}
}
Questi sono disponibili solo in uno Map stato e possono essere specificati nel ItemSelector (Mappa) campo.
Nota
È necessario definire i parametri dall'oggetto Context nel ItemSelector blocco dello Map stato principale, non all'interno degli stati inclusi nella ItemProcessor sezione.
Se una macchina a stati utilizza uno JSONPathMapstato, è possibile inserire informazioni dall'oggetto Context nel modo seguente.
{ "StartAt": "ExampleMapState", "States": { "ExampleMapState": { "Type": "Map", "ItemSelector": { "ContextIndex.$": "$$.Map.Item.Index", "ContextValue.$": "$$.Map.Item.Value", "ContextSource.$": "$$.Map.Item.Source" }, "ItemProcessor": { "ProcessorConfig": { "Mode": "INLINE" }, "StartAt": "TestPass", "States": { "TestPass": { "Type": "Pass", "End": true } } }, "End": true } } }
Infatti JSONata, è possibile accedere alle informazioni aggiuntive sul contesto dello stato della mappa dalla $states.context variabile:
{ "StartAt": "ExampleMapState", "States": { "ExampleMapState": { "Type": "Map", "ItemSelector": { "ContextIndex": "{% $states.context.Map.Item.Index %}", "ContextValue": "{% $states.context.Map.Item.Value %}", "ContextSource": "{% $states.context.Map.Item.Source %}" }, "ItemProcessor": { "ProcessorConfig": { "Mode": "INLINE" }, "StartAt": "TestPass", "States": { "TestPass": { "Type": "Pass", "End": true } } }, "End": true } } }
Se esegui la macchina a stati precedente con il seguente input, Index e Value vengono inseriti nell'output.
[ { "who": "bob" }, { "who": "meg" }, { "who": "joe" } ]
L'output per l'esecuzione restituisce i valori Index e Value gli elementi per ciascuna delle tre iterazioni nel modo seguente:
[
{
"ContextIndex": 0,
"ContextValue": {
"who": "bob"
},
"ContextSource" : "STATE_DATA"
},
{
"ContextIndex": 1,
"ContextValue": {
"who": "meg"
},
"ContextSource" : "STATE_DATA"
},
{
"ContextIndex": 2,
"ContextValue": {
"who": "joe"
},
"ContextSource" : "STATE_DATA"
}
]
Nota che $states.context.Map.Item.Source sarà uno dei seguenti:
-
Per l'input dello stato, il valore sarà:
STATE_DATA -
Per
Amazon S3 LIST_OBJECTS_V2withTransformation=NONE, il valore mostrerà l'URI S3 per il bucket. Ad esempio:S3://bucket-name. -
Per tutti gli altri tipi di input, il valore sarà l'URI di Amazon S3. Ad esempio:
S3://bucket-name/object-key.