Continuación con los flujos de trabajo de larga duración mediante la API Step Functions (recomendada) - 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.

Continuación con los flujos de trabajo de larga duración mediante la API Step Functions (recomendada)

AWS Step Functions se ha diseñado para ejecutar flujos de trabajo que tienen una duración y un número de pasos finitos. Las ejecuciones de flujos de trabajo estándar tienen una duración máxima de un año y 25 000 eventos (véase Service Quotas de Step Functions).

En el caso de las ejecuciones de larga duración, puede evitar alcanzar la cuota impuesta iniciando una nueva ejecución de flujo de trabajo desde el estado Task. Es necesario dividir sus flujos de trabajo en máquinas de estado más pequeñas que continúen el trabajo en curso en una nueva ejecución.

Para iniciar nuevas ejecuciones de flujos de trabajo, deberá llamar a la acción de la API StartExecution desde su estado Task y pasar los parámetros necesarios.

Step Functions puede iniciar estas ejecuciones de flujos de trabajo llamando a su propia API como servicio integrado. Le recomendamos que utilice este método para evitar superar las cuotas de servicio en el caso de ejecuciones prolongadas.

Paso 1: Crear una máquina de estado de ejecución prolongada

Cree una máquina de estado de ejecución prolongada que desee iniciar desde el estado Task de otra máquina de estado. Para este tutorial, utilice la máquina de estado que utiliza una función de Lambda.

nota

Asegúrese de copiar el nombre y el nombre de recurso de Amazon de esta máquina de estado en un archivo de texto para su uso posterior.

Paso 2: Crear una máquina de estado para llamar a la acción de la API Step Functions

Para iniciar ejecuciones de flujo de trabajo desde un estado Task
  1. Abra la consola de Step Functions y seleccione Crear máquina de estado.

  2. En el cuadro de diálogo Elegir una plantilla, seleccione En blanco.

  3. Elija Seleccionar para abrir Workflow Studio en Modo Diseño.

  4. Desde la pestaña Acciones, arrastre la acción de la API StartExecution y suéltela en el estado vacío con la etiqueta Arrastrar la primera acción aquí

  5. Elija el estado StartExecution y haga lo siguiente en la pestaña Configuración de Modo Diseño:

    1. Cambie el nombre del estado a Start nested execution.

    2. En Tipo de integración, seleccione AWS SDK: nuevo en la lista desplegable.

    3. En Parámetros de API, haga lo siguiente:

      1. En StateMachineArn, sustituya el ejemplo de nombre de recurso de Amazon por el ARN de su máquina de estado. Por ejemplo, introduzca el ARN de la máquina de estado que utiliza Lambda.

      2. En el nodo Input, sustituya el texto del marcador de posición existente por el siguiente valor:

        "Comment": "Starting workflow execution using a Step Functions API action"
      3. Asegúrese de que las entradas en Parámetros de API son similares a las siguientes:

        { "StateMachineArn": "arn:aws:states:us-east-2:123456789012:stateMachine:LambdaStateMachine", "Input": { "Comment": "Starting workflow execution using a Step Functions API action", "AWS_STEP_FUNCTIONS_STARTED_BY_EXECUTION_ID.$": "$$.Execution.Id" }
  6. (Opcional) Seleccione Definición en el panel Panel del inspector para ver la definición de Amazon States Language (ASL) generada automáticamente del flujo de trabajo.

    sugerencia

    También puede ver la definición de ASL en el Editor de código de Workflow Studio. En el editor de código también puede editar la definición de ASL del flujo de trabajo.

  7. Especifique un nombre para la máquina de estado. Para ello, elija el icono de edición situado junto al nombre predeterminado de máquina de estado de MyStateMachine. A continuación, en Configuración de máquina de estado, especifique un nombre en el cuadro Nombre de la máquina de estado.

    En este tutorial, ingrese el nombre ParentStateMachine.

  8. (Opcional) En Configuración de máquina de estado, especifique otros ajustes del flujo de trabajo, como el tipo de máquina de estado y su función de ejecución.

    Para este tutorial, mantenga todas las selecciones predeterminadas en Configuración de máquina de estado.

    Si ya ha creado un rol de IAM con los permisos correctos para su máquina de estado y desea utilizarlo, en Permisos, seleccione Elegir un rol existente y, a continuación, seleccione un rol de la lista. O seleccione Escribir un ARN de rol y, a continuación, proporcione un ARN para ese rol de IAM.

  9. En el cuadro de diálogo Confirmar creación de rol, elija Confirmar para continuar.

    También puede seleccionar Ver configuración de rol para volver a Configuración de máquina de estado.

    nota

    Si se elimina el rol de IAM que crea Step Functions, no se podrá volver a crear más adelante. Asimismo, si se modifica el rol (por ejemplo, eliminando Step Functions de las entidades principales de la política de IAM), Step Functions no podrá restablecer la configuración original más adelante.

Paso 3: Actualizar la política de IAM

Para asegurarse de que su máquina de estado tiene permisos para iniciar la ejecución de la máquina de estado que utiliza una función de Lambda, debe asociar una política insertada al rol de IAM de la máquina de estado. Para obtener más información, consulte Para integrar una política insertada en la Guía del usuario de IAM.

  1. En la página ParentStateMachine, elija el ARN del rol de IAM para ir a la página Roles de IAM de su máquina de estado.

  2. Asigne el permiso adecuado al rol de IAM de ParentStateMachine para que pueda iniciar la ejecución de otra máquina de estado. Para asignar estos permisos, haga lo siguiente:

    1. En la página Roles de IAM, elija Agregar permisos y, a continuación, Crear política insertada.

    2. En la página Crear política, elija la pestaña JSON.

    3. Reemplace el texto existente por la política siguiente.

      { "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "states:StartExecution" ], "Resource": [ "arn:aws:states:us-east-2:123456789012:stateMachine:LambdaStateMachine" ] } ] }
    4. Elija Revisar política.

    5. Escriba un nombre para la política y elija Crear política.

Paso 4: Ejecutar la máquina de estado

Las ejecuciones de máquinas de estado son instancias en las que se ejecuta un flujo de trabajo para realizar tareas.

  1. En la página ParentStateMachine, seleccione Iniciar ejecución.

    Aparece el cuadro de diálogo Iniciar ejecución.

  2. En el cuadro de diálogo Iniciar ejecución, haga lo siguiente:

    1. (Opcional) Introduzca un nombre de ejecución personalizado para anular el valor predeterminado generado.

      Nombres y registros con caracteres no ASCII

      Step Functions acepta nombres para máquinas de estado, ejecuciones, actividades y etiquetas que contengan caracteres no ASCII. Dado que estos caracteres no funcionan con Amazon CloudWatch, le recomendamos que utilice únicamente caracteres ASCII para poder realizar un seguimiento de las métricas en CloudWatch.

    2. (Opcional) En el cuadro Entrada, introduzca los valores de entrada en formato JSON para ejecutar el flujo de trabajo.

    3. Seleccione Iniciar ejecución.

    4. La consola de Step Functions le dirige a una página cuyo título es su ID de ejecución. Esta página se conoce como Detalles de la ejecución. En esta página, puede revisar los resultados de la ejecución a medida que avanza la ejecución o una vez finalizada.

      Para revisar los resultados de la ejecución, elija los estados individuales en la Vista de gráfico y, a continuación, elija las pestañas individuales del panel Detalles del paso para ver los detalles de cada estado, incluidas la entrada, la salida y la definición, respectivamente. Para obtener más información sobre la ejecución que puede ver en la página Detalles de la ejecución, consulte Información general sobre los detalles de ejecución.

  3. Abra la página LambdaStateMachine y observe una nueva ejecución desencadenada por ParentStateMachine.