Redriving El mapa se ejecuta en las ejecuciones de Step Functions - 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 El mapa se ejecuta en las ejecuciones de Step Functions

Puede reiniciar las ejecuciones fallidas de flujos de trabajo secundarios en un mapa ejecutado por redrivingtu flujo de trabajo principal. A redriven flujo de trabajo principal redrives todos los estados fallidos, incluido el mapa distribuido. 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 MapStateExited evento de un MapStateEntered evento, puedes redrive el flujo de trabajo principal para redrive todas las ejecuciones fallidas del flujo de trabajo secundario en 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 (Mapa), a ResultWriter (Mapa) o a ambas. Si Map Run no se inició en el intento de ejecución original del flujo de trabajo principal, redriving el flujo de trabajo principal inicia Map Run por primera vez. Para resolver este problema, añada los permisos necesarios a su rol de máquina estatal y, a continuación redrive el flujo de trabajo principal. En el caso de redrive el flujo de trabajo principal, sin añadir los permisos necesarios, intenta iniciar una nueva ejecución de Map Run que volverá a fallar. Para obtener información acerca de los permisos que podría necesitar, consulte IAMpolíticas para usar estados de mapas distribuidos.

Redrive aptitud para los flujos de trabajo secundarios en una ejecución de mapas

Puedes redrive el flujo de trabajo secundario fallido se ejecuta en 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 has superado el límite máximo de 1000 redrives de una ejecución de mapa determinada. 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 lo es redrivable, no puedes redrive el flujo de trabajo secundario se ejecuta en Map Run. Para obtener más información acerca de redrive aptitud de un flujo de trabajo, consulteRedrive elegibilidad 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 redrive aptitud de una ejecución, consulteRedrive elegibilidad para ejecuciones fallidas.

Se inicia una nueva ejecución de mapas y no la ejecución de mapas existente redriven en los siguientes casos, incluso si la ejecución del mapa falló 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, el redrive no ocurre de inmediato:

  • 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 (Mapa), si lo ha configurado para exportarlos.

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

Ejecución de flujo de trabajo secundario redrive comportamiento

La redriven las ejecuciones de flujos de trabajo secundarios 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 StartExecutionAPIacción. El primer estado en ItemProcessor se ejecuta primero. Todas las ejecuciones del flujo de trabajo secundario que fallaron, agotaron el tiempo de espera o se cancelaron en el intento de ejecución original son redriven utilizando el RedriveExecutionAPIacción. Estos flujos de trabajo secundarios son redriven desde el último estado en el ItemProcessor que no se ejecutaron correctamente.

Las ejecuciones fallidas siempre pueden ser 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 StartExecution API acción.

Las ejecuciones fallidas de flujos de trabajo secundarios de Standard no siempre se pueden producir redriven. Si una ejecución no lo es redrivable, no se volverá 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 su redrivable ha expirado el período de 14 días.

Es posible que la ejecución de un flujo de trabajo secundario estándar no lo sea redrivable si la ejecución del flujo de trabajo principal se cerró en un plazo de 14 días, pero la ejecución del flujo de trabajo secundario se cerró antes de los 14 días.

Las ejecuciones del flujo de trabajo secundario de Express utilizan la ARN misma ejecución que el intento de ejecución original, pero no se puede identificar claramente la ejecución individual redrives. Las ejecuciones de flujos de trabajo secundarios estándar utilizan la ARN misma ejecución que en el intento de ejecución original. Puede identificar claramente a la persona redrives en la consola y utilizandoAPIs, como GetExecutionHistoryy DescribeExecution. Para obtener más información, consulte Examinando redriven ejecuciones.

Si tienes redriven una ejecución de mapa y ha alcanzado su límite de simultaneidad, las ejecuciones del flujo de trabajo secundario en esa ejecución de mapa pasan al estado pendiente. El estado de ejecución de la ejecución del mapa también pasa al estado Pendiente redriveestado. Hasta que el límite de simultaneidad especificado permita ejecutar más flujos de trabajo secundarios, la ejecución permanecerá en el estado Pendiente redriveestado.

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 una ejecución de un mapa finaliza su ejecución o se cancela, el recuento de ejecuciones secundarias del flujo de trabajo pasa a estar pendiente redriveel estado se restablece a 0.

Escenarios de entrada utilizados en Map Run redrive

Según la forma en que haya introducido la entrada al mapa distribuido en el intento de ejecución original, un redriven Map Run 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. La redriven Map Run utiliza la misma entrada.
La entrada transferida mediante ItemReader (Mapa) 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.

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

IAMpermiso para redrive un Map Run

Step Functions necesita el permiso adecuado para redrive un Map Run. El siguiente ejemplo IAM de política otorga el mínimo de privilegios requerido a su máquina de estados para redriving una ejecución de mapas. Recuerde reemplazar el italicized envíe un mensaje de texto con la información específica de su recurso.

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

Redriving 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 redrive el Map Run, debes redrive 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 redrive un mapa ejecutado 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. Haga clic en .Redrive.

  4. En la Redrivecuadro de diálogo, seleccione Redrive ejecución.

    sugerencia

    También puede redrive un mapa ejecutado desde la página de detalles de la ejecución o detalles de la ejecución del mapa.

    Si se encuentra en la página de detalles de la ejecución, realice una de las siguientes acciones para redrive la ejecución:

    • Elija Recuperar y, a continuación, seleccione Redrive de un error.

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

    Si se encuentra en la página de detalles de la ejecución del mapa, elija Recuperar y, a continuación, seleccione Redrive de un error.

    Observe que redrive usa la misma definición de máquina de estados yARN. 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 del flujo de trabajo secundario de Map Run, redrive continuará con la ejecución del paso Listo.

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

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

Después de haber redriven un Map Run, puedes examinar su redrive detalles en la consola o mediante las DescribeExecutionAPIacciones GetExecutionHistoryy. Para obtener más información sobre cómo examinar un redriven ejecución, consulteExaminando redriven ejecuciones.

Redriving Map Run usando API

Puedes redrive un Map Run elegible utilizando el RedriveExecutionAPIen el flujo de trabajo principal. Esto API reinicia las ejecuciones fallidas del flujo de trabajo secundario en un Map Run.

En el navegador AWS Command Line Interface (AWS CLI), ejecute el siguiente comando para redrive una ejecución fallida de la máquina de estados. Recuerde reemplazar el italicized envíe un mensaje de texto con la información específica de su recurso.

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

Después de tener redriven un Map Run, puedes examinar su redrive detalles en la consola o mediante la DescribeMapRunAPIacción. Para examinar el redrive Para obtener información sobre las ejecuciones del flujo de trabajo estándar en una ejecución de mapas, puede utilizar la DescribeExecutionAPIacción GetExecutionHistoryo. Para obtener más información sobre cómo examinar un redriven ejecución, consulteExaminando redriven ejecuciones.

Puede examinar el redrive detalles de las ejecuciones del flujo de trabajo de Express 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 Uso de CloudWatch registros para registrar el historial de ejecuciones en Step Functions.