Acceso a los datos de ejecución desde el objeto Context en Step Functions - AWS Step Functions

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

Administrar el estado y transformar los datos

Step Functions agregó recientemente variables y JSONata para administrar el estado y transformar los datos.

Obtenga información sobre cómo pasar datos con variables y cómo transformar datos con JSONata.

El objeto Context es una JSON estructura 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 JSONata expresión con$states.context.

Acceder al objeto Context

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 enJSONPath, primero hay que .$ añadirlo al final de la clave para indicar que el valor es una ruta. A continuación, anteponga el valor $$. para seleccionar un nodo en el objeto de contexto.

{ "ExecutionID.$": "$$.Execution.Id" }

JSONPathlos estados pueden hacer referencia al contexto ($$.) desde los siguientes campos: JSONPath

  • InputPath

  • OutputPath

  • ItemsPath (en los estados Map)

  • Variable (en los estados Choice)

  • ResultSelector

  • Parameters

  • Operadores de comparación entre variables

Campos de objetos de contexto

El objeto Context incluye información sobre la máquina de estados, el estado, la ejecución y la tarea. Este JSON objeto incluye nodos para cada tipo de datos y tiene 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 los datos relevantes. RedriveTime El objeto de contexto solo está disponible si tienes redriven una ejecución. Si tienes redriven a Map Run, el objeto de RedriveTime contexto 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: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" } }
nota

Para ver los datos de objetos de contexto relacionados con Map los estados, consulteDatos de objetos de contexto para los estados del mapa.

Datos de objetos de contexto para los estados del mapa

Administrar el estado y transformar los datos

Step Functions agregó recientemente variables y JSONata para administrar el estado y transformar los datos.

Obtenga información sobre cómo pasar datos con variables y cómo transformar datos con JSONata.

Hay dos elementos adicionales disponibles en el objeto Context al procesar un Mapestado: Index yValue. Para cada iteración del estado Map, Index contiene el número de índice del elemento de matriz que se está procesando actualmente, mientras que Value contiene el elemento de matriz que se está procesando. Dentro de un Map estado, el objeto Context incluye los siguientes datos:

"Map": { "Item": { "Index": Number, "Value": "String" } }

Solo están disponibles en un estado Map y se pueden especificar en el campo ItemSelector (Mapa).

nota

Debe definir los parámetros desde el objeto Context en el ItemSelector bloque del Map estado principal, no dentro de los estados incluidos en la ItemProcessor sección.

Si una máquina de estados utiliza un JSONPath Map estado, 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" }, "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" } }, { "ContextIndex": 1, "ContextValue": { "who": "meg" } }, { "ContextIndex": 2, "ContextValue": { "who": "joe" } } ]