Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.
Acceso a los datos de ejecución desde el objeto Context en Step Functions
Administración del estado y transformación de los datos
Obtenga información sobre la Transmisión de datos entre estados con variables y la Transformación de datos con JSONata.
El objeto Context es una estructura JSON interna que está disponible durante una ejecución y contiene información sobre la máquina de estados y la ejecución. El contexto proporciona a sus flujos de trabajo información sobre su ejecución específica. Sus flujos de trabajo pueden hacer referencia al objeto Context en una expresión de JSONata con $states.context.
Acceso al objeto Contexto
Cómo acceder al objeto Context en JSONata
Para acceder al objeto Context en los estados de JSONata, use $states.context en una expresión de JSONata.
{
"ExecutionID" : "{% $states.context.Execution.Id %}"
}
Cómo acceder al objeto Context en JSONPath
Para acceder al objeto Context en JSONPath, primero debe anexar .$ al final de la clave para indicar que el valor es una ruta. A continuación, anexe el valor $$. para seleccionar un nodo en el objeto Context.
{
"ExecutionID.$": "$$.Execution.Id"
}
Los estados de JSONPath pueden hacer referencia al contexto ($$.) desde los siguientes campos de JSONPath:
-
InputPath -
OutputPath -
ItemsPath(en los estados Map) -
Variable(en los estados Choice) -
ResultSelector -
Parameters -
Operadores de comparación entre variables
Campos de objeto Context
El objeto Context incluye información acerca de la máquina de estado, el estado, la ejecución y la tarea. El objeto JSON Context incluye nodos para cada tipo de datos en el siguiente 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 una ejecución, el objeto Context se rellena con datos relevantes.
En algunas ocasiones, se añaden nuevos campos al contexto. Si está procesando el contexto JSON directamente, le recomendamos que elabore un código que pueda gestionar sin problemas los nuevos campos desconocidos. Por ejemplo, si utiliza la biblioteca Jackson para deserializar JSON, le recomendamos establecer FAIL_ON_UNKNOWN_PROPERTIES en false en su ObjectMapper para evitar una UnrecognizedPropertyException.
El objeto Context RedriveTime solo está disponible si ha redriven una ejecución. Si ha utilizado redriven a Map Run, el objeto de contexto RedriveTime solo está disponible para los flujos de trabajo secundarios de tipo estándar. Para un redriven Map Run con flujos de trabajo secundarios de tipo Express, RedriveTime no está disponible.
El contenido de una ejecución en curso incluye información detallada en el siguiente 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 de marca temporal con fracciones de segundo
Step Functions sigue la especificación ISO8601, que establece que la salida puede tener cero, tres, seis o nueve dígitos según sea necesario. Cuando una marca temporal tiene cero fracciones de segundo, Step Functions elimina los ceros finales en lugar de rellenar la salida.
Si crea código que consume marcas temporales de Step Functions, el código debe poder procesar un número variable de fracciones de segundo.
Datos del objeto Context para los estados Map
Administración del estado y transformación de los datos
Obtenga información sobre la Transmisión de datos entre estados con variables y la Transformación de datos con JSONata.
Al procesar un estado Map, el contexto también contendrá IndexValue y Source.
Para cada iteración del estado Map, Index contiene el número de índice del elemento de matriz que se está procesando actualmente, Value contiene el elemento de matriz que se está procesando, y Source será el InputType de CSV, JSON, JSONL o PARQUET.
Dentro de un estado Map, el objeto Context incluye los datos siguientes:
"Map": {
"Item": {
"Index" : Number,
"Key" : "String", // Only valid for JSON objects
"Value" : "String",
"Source": "String"
}
}
Solo están disponibles en un estado Map y se pueden especificar en el campo ItemSelector (Map).
nota
Debe definir parámetros desde el objeto Context en el bloque ItemSelector del estado Map principal, no dentro de los estados incluidos en la sección ItemProcessor.
Dada una máquina de estado con un estado Map de JSONPath, puede inyectar información del objeto Context de la siguiente manera.
{ "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 } } }
En el caso de JSONata, se puede acceder a la información adicional del contexto del estado Map desde la variable $states.context:
{ "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 } } }
Si ejecuta la máquina de estado anterior con la siguiente entrada, Index y Value se insertan en la salida.
[ { "who": "bob" }, { "who": "meg" }, { "who": "joe" } ]
El resultado de la ejecución devuelve los valores de los elementos Index y Value de cada una de las tres iteraciones de la siguiente manera:
[
{
"ContextIndex": 0,
"ContextValue": {
"who": "bob"
},
"ContextSource" : "STATE_DATA"
},
{
"ContextIndex": 1,
"ContextValue": {
"who": "meg"
},
"ContextSource" : "STATE_DATA"
},
{
"ContextIndex": 2,
"ContextValue": {
"who": "joe"
},
"ContextSource" : "STATE_DATA"
}
]
Tenga en cuenta que $states.context.Map.Item.Source será una de las siguientes:
-
Para la entrada de estado, el valor será:
STATE_DATA -
Para
Amazon S3 LIST_OBJECTS_V2conTransformation=NONE, el valor mostrará la URI de S3 del bucket. Por ejemplo:S3://bucket-name. -
Para el resto de tipos de entrada, el valor será la URI de Amazon S3. Por ejemplo:
S3://bucket-name/object-key.