Iniciar ejecuciones de flujo de trabajo desde un estado de tarea - 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.

Iniciar ejecuciones de flujo de trabajo desde un estado de tarea

AWS Step Functions puede iniciar ejecuciones de flujo de trabajo directamente desde el estado Task de una máquina de estado. Esto le permite dividir los flujos de trabajo en máquinas de estado más pequeñas e iniciar ejecuciones de estas otras máquinas de estado. Al iniciar estas nuevas ejecuciones de flujo de trabajo puede:

  • Separar el flujo de trabajo de nivel superior de los flujos de trabajo específicos de tareas de nivel inferior.

  • Evitar elementos repetitivos llamando a una máquina de estado independiente varias veces.

  • Crear una biblioteca de flujos de trabajo reutilizables modulares para un desarrollo más rápido.

  • Reducir la complejidad y facilitar la edición y la resolución de problemas de máquinas de estado.

Step Functions puede iniciar estas ejecuciones de flujo de trabajo llamando a su propia API como un servicio integrado. Solo tiene que llamar a la acción de la API StartExecution desde su estado Task y transferir los parámetros necesarios. Puede llamar a la API de Step Functions utilizando cualquiera de los patrones de integración de servicios.

sugerencia

Para implementar un ejemplo de un flujo de trabajo anidadoCuenta de AWS, consulte el Módulo 13: Flujos de trabajo rápidos anidados.

Para iniciar una nueva ejecución de una máquina de estado, utilice un estado Task similar al ejemplo siguiente.

{ "Type":"Task", "Resource":"arn:aws:states:::states:startExecution", "Parameters":{ "StateMachineArn":"arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld", "Input":{ "Comment":"Hello world!" }, }, "Retry":[ { "ErrorEquals":[ "StepFunctions.ExecutionLimitExceeded" ] } ], "End":true }

Este estado Task comenzará una nueva ejecución de la máquina de estado HelloWorld y transferirá el comentario JSON como entrada.

nota

Las cuotas de acción de la API StartExecution pueden limitar el número de ejecuciones que puede iniciar. Utilice Retry en StepFunctions.ExecutionLimitExceeded para asegurarse de que se inicia la ejecución. Consulte lo siguiente.

Asociar ejecuciones de flujos de trabajo

Para asociar una ejecución de flujo de trabajo iniciada con la ejecución que la inició, transfiera el ID de ejecución del objeto context a la entrada de ejecución. Puede acceder al ID desde el objeto context desde su estado Task en una ejecución en curso. Transfiera el ID de ejecución añadiendo .$ al nombre del parámetro y haciendo referencia al ID en el objeto context con $$.Execution.Id.

"AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID.$": "$$.Execution.Id"

Puede utilizar un parámetro especial denominado AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID al iniciar una ejecución. Si se incluye, esta asociación proporciona enlaces en la sección Detalles del paso de la consola de Step Functions. Cuando se proporciona, puede rastrear fácilmente las ejecuciones de los flujos de trabajo desde las ejecuciones de inicio a las ejecuciones de flujo de trabajo iniciadas. Utilizando el ejemplo anterior, asocie el ID de ejecución con la ejecución iniciada de la máquina de estado HelloWorld de la siguiente manera.

{ "Type":"Task", "Resource":"arn:aws:states:::states:startExecution", "Parameters":{ "StateMachineArn":"arn:aws:states:us-east-1:123456789012:stateMachine:HelloWorld", "Input": { "Comment": "Hello world!", "AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID.$": "$$.Execution.Id" } }, "End":true }

Para obtener más información, consulte los siguientes temas: