Redriving de Map Runs - 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.

Redriving de Map Runs

Puede reiniciar las ejecuciones fallidas de flujos de trabajo secundarios en un flujo de trabajo basado en Map Run mediante redriving del flujo de trabajo principal. Un flujo de trabajo principal redriven redrives todos los estados fallidos, incluido el estado Map Distributed. Un flujo de trabajo principal reconduce los estados de error si no hay ningún evento <stateType>Exited correspondiente al evento <stateType>Entered para un estado cuando el flujo de trabajo principal completó su ejecución. Por ejemplo, si el historial de eventos no contiene el evento MapStateExited de un evento MapStateEntered, puede utilizar redrive con el flujo de trabajo principal para utilizar redrive con todas las ejecuciones fallidas de flujos de trabajo secundarios en el Map Run.

Un Map Run no se inicia o produce un error en el intento de ejecución original cuando la máquina de estado no tiene el permiso necesario para acceder a ItemReader, a ResultWriter o a ambas. Si el Run Map no se inició en el intento de ejecución original del flujo de trabajo principal, el uso de redriving con el flujo de trabajo principal inicia la ejecución del Map Run por primera vez. Para solucionar este problema, añada los permisos necesarios al rol de la máquina de estado y, a continuación, utilice redrive con el flujo de trabajo principal. Si utiliza redrive con el flujo de trabajo principal sin añadir los permisos necesarios, intentará iniciar una nueva ejecución de Map Run que volverá a producir un error. Para obtener información acerca de los permisos que podría necesitar, consulte Políticas de IAM para usar el estado Map Distributed.

Aptitud de Redrive para los flujos de trabajo secundarios en un Map Run

Puede utilizar sin éxito redrive en ejecuciones fallidas de flujos de trabajo secundario de Map Run si se cumplen las siguientes condiciones:

  • Comenzó la ejecución del flujo de trabajo principal el 15 de noviembre de 2023 o después de esa fecha. Las ejecuciones que haya iniciado antes de esta fecha no son aptas para redrive.

  • No ha superado el límite máximo de 1000 redrives de un Map Run dado. Si ha superado este límite, recibirá el error States.Runtime.

  • El flujo de trabajo principal es redrivable. Si el flujo de trabajo principal no es redrivable, no podrá utilizar redrive con el flujo de trabajo secundario en un Map Run. Para obtener más información sobre la aptitud para redrive de un flujo de trabajo, consulte Aptitud de Redrive para ejecuciones fallidas.

  • Las ejecuciones de flujos de trabajo secundarios del tipo estándar en el Map Run no han superado el límite del historial de eventos de ejecución de 25 000. Las ejecuciones de flujos de trabajo secundarios que superan el límite del historial de eventos se contabilizan para el umbral de error tolerado y se consideran fallidas. Para obtener más información acerca de la aptitud para redrive de una ejecución, consulte Aptitud de Redrive para ejecuciones fallidas.

En los siguientes casos, se inicia un nuevo Map Run y no se utiliza redriven con el Map Run existente aunque si la ejecución del Map Run falle en el intento de ejecución original:

Un Map Run puede seguir ejecutándose incluso después de que el flujo de trabajo principal se detenga o agote el tiempo de espera. En estos escenarios, redrive no ocurre de forma inmediata:

  • Es posible que Map Run aún esté cancelando ejecuciones de flujos de trabajo secundarios de tipo estándar en curso o esperando a que las ejecuciones de flujos de trabajo secundarios de tipo rápido completen sus ejecuciones.

  • Es posible que Map Run siga escribiendo resultados en ResultWriter, si lo ha configurado para exportarlos.

En estos casos, el Map Run en ejecución completa sus operaciones antes de intentar utilizar redrive.

Comportamiento de redrive en la ejecución de flujos de trabajo secundarios

Las ejecuciones de flujos de trabajo secundarios de redriven en un Map Run muestran el comportamiento que se describe en la siguiente tabla.

Flujo de trabajo secundario rápido Flujo de trabajo secundario estándar
Todas las ejecuciones del flujo de trabajo secundario que fallaron o agotaron el tiempo de espera en el intento de ejecución original se inician mediante la acción de la StartExecutionAPI. El primer estado en ItemProcessor se ejecuta primero. Con todas las ejecuciones de flujos de trabajo secundarios que produzcan un error, agoten su tiempo de espera o se cancelen en el intento de ejecución original se utiliza redriven con la acción de la API RedriveExecution. Estos flujos redriven de trabajo secundarios pertenecen al último estado en el ItemProcessor que no se ejecutó correctamente.

Con las ejecuciones fallidas siempre se puede utilzar redriven. Esto se debe a que las ejecuciones de flujos de trabajo secundarios de Express siempre se inician como una nueva ejecución mediante la acción de la StartExecution API.

No siempre es posible utilizar redriven con los flujos de trabajo secundarios estándar. Si con una ejecución no se utiliza redrivable, no se vuelve a intentar. El último error o salida de la ejecución es permanente. Esto es posible cuando una ejecución supera los 25 000 eventos históricos o cuando su período redrivable de 14 días ha caducado.

Es posible que no se utilice redrivable con una ejecución de flujo de trabajo secundario estándar si la ejecución del flujo de trabajo principal se ha cerrado en un plazo de 14 días, pero la ejecución del flujo de trabajo secundario se ha cerrado antes de 14 días.

Las ejecuciones de flujos de trabajo secundarios rápidos utilizan el mismo ARN de ejecución que el intento de ejecución original, pero no se puede identificar claramente cada uno de sus redrives. Las ejecuciones de flujos de trabajo secundarios estándar utilizan el mismo ARN de ejecución que el intento de ejecución original. Puede identificar claramente a la persona redrives en la consola y mediante API, como GetExecutionHistoryy DescribeExecution. Para obtener más información, consulte Examen de las ejecuciones redriven.

Si un Map Run ha sido redriven y ha alcanzado su límite de simultaneidad, las ejecuciones de flujos de trabajo secundarios de este Map Run pasarán al estado pendiente. El estado de ejecución de Map Run también pasa al estado Pendiente de redrive. Hasta que el límite de simultaneidad especificado permita ejecutar más flujos de trabajo secundarios, la ejecución permanecerá en el estado Pendiente de redrive.

Por ejemplo, supongamos que el límite de simultaneidad del estado Map Distributed en el flujo de trabajo es de 3000 y el número de flujos de trabajo secundarios que se van a volver a ejecutar es de 6000. Esto hace que 3000 flujos de trabajo secundarios se ejecuten en paralelo, mientras que los 3000 flujos de trabajo restantes permanezcan en el estado Pendientes de reconducción. Una vez que el primer lote de 3000 flujos de trabajo secundarios completa su ejecución, se ejecutan los 3000 flujos de trabajo secundarios restantes.

Cuando un Map Run finaliza su ejecución o se anula, el recuento de ejecuciones de flujos de trabajo secundarios en el estado Pendiente de redrive se restablece a 0.

Escenarios de entrada utilizados en Map Run redrive

En función de cómo se haya introducido la entrada en el estado Map Distributed en el intento de ejecución original, una ejecución de Map Run redriven utilizará la entrada tal y como se describe en la siguiente tabla.

Entrada en el intento de ejecución original Entrada utilizada en Map Run redrive
Entrada transferida desde un estado anterior o desde la entrada de ejecución. El Map Run redriven utiliza la misma entrada.
La entrada transferida mediante ItemReader y Map Run no inició las ejecuciones del flujo de trabajo secundario porque se cumple una de las siguientes condiciones:
  • Map Run falló y se produjo el error States.ItemReaderFailed.

  • Map Run falló y se produjo el error States.ResultWriterFailed.

  • Se agotó el tiempo de espera de la ejecución del flujo de trabajo principal o se canceló antes de que se iniciara el Map Run.

El Map Run redriven utiliza la entrada del bucket de Amazon S3.
La entrada se pasó usando ItemReader. El Map Run produjo un error tras iniciar o intentar iniciar ejecuciones de flujos de trabajo secundarios. La ejecución del Map Run redriven utiliza la misma entrada proporcionada en el intento de ejecución original.

Permiso de IAM para utilizar redrive con un Map Run

Step Functions necesita el permiso adecuado para utilizar redrive con un Map Run. El siguiente ejemplo de política de IAM concede el privilegio mínimo necesario a la máquina estatal para utilizar redriving con un Map Run. Recuerde reemplazar el texto en cursiva por la información específica del recurso.

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "states:RedriveExecution" ], "Resource": "arn:aws:states:us-east-2:123456789012:execution:myStateMachine/myMapRunLabel:*" } ] }

Redriving de Map Run en la consola

La siguiente imagen muestra el gráfico de ejecución de una máquina de estado que contiene un estado Map Distributed. Esta ejecución falló porque se produjo un error en el Map Run. Para utilizar redrive con el Map Run, debe utilizar redrive con el flujo de trabajo principal.

Gráfico de una ejecución fallida de una máquina de estado causada por un error en un Map Run.
Para utilizar redrive con un Map Run desde la consola
  1. Abra la consola de Step Functions y, a continuación, elija una máquina de estado existente que contenga un estado Map Distributed cuya ejecución no se haya realizado correctamente.

  2. En la página de detalles de la máquina de estado, en Ejecuciones, elija una instancia de ejecución fallida de esta máquina de estado.

  3. Elija Redrive.

  4. En el cuadro de diálogo Redrive, elija Redrive ejecución.

    sugerencia

    También puede utilizar redrive con un Map Run desde la página Detalles de ejecución o Detalles del Map Run.

    Si se encuentra en la página de Detalles de la ejecución, lleve a cabo una de las siguientes acciones para utilizar redrive con la ejecución:

    • Elija Recuperar y, a continuación, seleccione una opción Redrive desde error.

    • Elija Acciones y, a continuación, seleccione Redrive.

    Si se encuentra en la página Detalles de Map Run, elija Recuperar y, a continuación, seleccione Redrive desde error.

    Observe que redrive utiliza la misma definición de máquina de estado y el mismo ARN. Continúa la ejecución desde el paso que produjo un error en el intento de ejecución original. En este ejemplo, se trata del paso del estado Map Distributed denominado Mapa y el paso de Entrada del proceso dentro de él. Tras reiniciar las ejecuciones fallidas de flujos de trabajo secundarios del Map Run, redrive continuará con la ejecución del paso Listo.

  5. En la página Detalles de ejecución, seleccione Map Run para ver los detalles de la ejecución del Map Run redriven.

    En esta página, puede ver los resultados de la ejecución redriven. Por ejemplo, en la sección Resumen de ejecución de Map Run, puede ver el Recuento de Redrive, que representa el número de veces que se ha utilizado redriven con el Map Run. En la sección Eventos, puede ver los eventos de ejecución relacionados con redrive adjuntos a los eventos del intento de ejecución original. Por ejemplo, el evento MapRunRedriven.

Después de ejecutar redriven un mapa, puedes examinar sus redrive detalles en la consola o mediante las acciones GetExecutionHistoryy de la DescribeExecutionAPI. Para obtener más información acerca de cómo examinar una ejecución redriven, consulte Examen de las ejecuciones redriven.

Redriving de Map Run mediante la API

Puede utilizar redrive con un Map Run apto mediante la API RedriveExecution del flujo de trabajo principal. Esta API reinicia las ejecuciones fallidas de flujos de trabajo secundarios en un Map Run.

En AWS Command Line Interface (AWS CLI), ejecute el siguiente comando para utilizar redrive con una máquina de estados con error. Recuerde reemplazar el texto en cursiva por la información específica del recurso.

aws stepfunctions redrive-execution --execution-arn arn:aws:states:us-east-2:123456789012:execution:myStateMachine:foo

Tras ejecutar redriven un mapa, puedes examinar sus redrive detalles en la consola o mediante la acción de la DescribeMapRunAPI. Para examinar los redrive detalles de las ejecuciones de flujos de trabajo estándar en una ejecución de mapas, puedes usar la acción GetExecutionHistoryo de la DescribeExecutionAPI. Para obtener más información acerca de cómo examinar una ejecución redriven, consulte Examen de las ejecuciones redriven.

Puede examinar los detalles de redrive de las ejecuciones de flujos de trabajo rápidos en un Map Run en la consola de Step Functions si ha activado el registro en el flujo de trabajo principal. Para obtener más información, consulte Registro mediante CloudWatch Logs.