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 cómo pasar datos entre estados con variables y cómo transformar 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 de contexto en una JSONata expresión con$states.context.
Acceso al objeto Contexto
Para acceder al objeto Context en JSONata
Para acceder al objeto Context en JSONata estados, $states.context utilícelo en una JSONata expresión.
{
"ExecutionID" : "{% $states.context.Execution.Id %}"
}
Para acceder al objeto Context en JSONPath
Para acceder al objeto Context en JSONPath, primero hay que .$ añadirlo 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"
}
JSONPath los estados pueden hacer referencia al contexto ($$.) desde los siguientes JSONPath campos:
-
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 ISO8601 especificación que establece que la salida puede ser de 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 cómo pasar datos entre estados con variables y cómo transformar datos con JSONata.
Al procesar un estado Map, el contexto también contendrá Index, Value y Source.
Para cada iteración de Map estado, 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 deCSV, JSONJSONL, oPARQUET.
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.
Si una máquina de estados utiliza un JSONPathMapestado, 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 } } }
Por ejemplo JSONata, se puede acceder a la información adicional del contexto del estado del mapa desde la $states.context variable:
{ "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.