Objeto Context - 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.

Objeto Context

El objeto context es una estructura JSON interna que está disponible durante la ejecución y contiene información acerca de la máquina de estado y la ejecución. Esto permite a sus flujos de trabajo acceder a la información acerca de su ejecución específica. Puede acceder al objeto de contexto desde los siguientes campos:

  • InputPath

  • OutputPath

  • ItemsPath(en los estados del mapa)

  • Variable(en estados Choice)

  • ResultSelector

  • Operadores de comparación de variables a variables

Formato de objetos de contexto

El objeto de contexto incluye información acerca de la máquina de estado, el estado, la ejecución y la tarea. Este objeto JSON incluye nodos para cada tipo de datos y se encuentra en el siguiente formato.

{ "Execution": { "Id": "String", "Input": {}, "Name": "String", "RoleArn": "String", "StartTime": "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 de contexto se rellena con datos relevantes para el campo Parameters desde donde se accede. El valor de un campo Task es nulo si el campo Parameters se encuentra fuera de un estado de tarea.

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 obtener información sobre los datos de objetos context relacionados con los estados Map, consulte Datos del objeto context para los estados Map.

Acceso al objeto de contexto

Para obtener acceso al contexto objeto, especifique en primer lugar el nombre del parámetro añadiendo .$ al final, de la misma forma que cuando selecciona la entrada del estado con una ruta. A continuación, para obtener acceso a datos de objetos de contexto en lugar de la entrada, anexe la ruta con $$.. Esto le indica a AWS Step Functions que utilice la ruta para seleccionar un nodo en el objeto de contexto.

Los siguientes ejemplos muestran cómo acceder a objetos de contexto, como el ID de ejecución, el nombre y la hora de inicio.

ejemplo para retirar y pasar el nombre de recurso de Amazon (ARN) de ejecución a un mensaje de Amazon Simple Queue Service (Amazon SQS)

Este ejemploTaskstate utiliza una ruta para retirar y pasar el nombre de recurso de Amazon (ARN) de ejecución a un mensaje de Amazon Simple Queue Service (Amazon SQS).

{ "Order Flight Ticket Queue": { "Type": "Task", "Resource": "arn:aws:states:::sqs:sendMessage", "Parameters": { "QueueUrl": "https://sqs.us-east-1.amazonaws.com/123456789012/flight-purchase", "MessageBody": { "From": "YVR", "To": "SEA", "Execution.$": "$$.Execution.Id" } }, "Next": "NEXT_STATE" } }
nota

Para obtener más información acerca de cómo utilizar el token de tarea al llamar a un servicio integrado, consulte Cómo esperar una devolución de llamada con el token de tarea.

ejemplo para acceder al nombre y la hora de inicio de la ejecución en unPassstate

{ "Comment": "Accessing context object in a state machine", "StartAt": "Get execution context data", "States": { "Get execution context data": { "Type": "Pass", "Parameters": { "startTime.$": "$$.Execution.StartTime", "execName.$": "$$.Execution.Name" }, "ResultPath": "$.executionContext", "End": true } } }

Datos del objeto context para los estados Map

Existen dos elementos adicionales disponibles en el objeto context al procesar un estado Map: Index y Value. Para cadaMapiteración de estado,Indexcontiene el número de índice del elemento de la matriz que se está procesando actualmente, mientras queValuecontiene el elemento de matriz que se está procesando. Dentro de unMap, 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 e campo Parameters, antes de la sección Iterator.

nota

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

Dada una máquina de estado con un estado Map sencillo, podemos inyectar información del objeto context de la siguiente manera.

{ "StartAt": "ExampleMapState", "States": { "ExampleMapState": { "Type": "Map", "Parameters": { "ContextIndex.$": "$$.Map.Item.Index", "ContextValue.$": "$$.Map.Item.Value" }, "Iterator": { "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 deIndexyValueelementos para 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" } } ]