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"
}
}
]