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 ejecuciones Map en Step Functions
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 (Mapa), a ResultWriter (Mapa) 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 resolver este problema, agregue los permisos requeridos al rol de la máquina de estado y luego redrive 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 estados Map Distributed.
Temas
- Aptitud de Redrive para los flujos de trabajo secundarios en un Map Run
- Comportamiento de redrive en la ejecución de flujos de trabajo secundarios
- Escenarios de entrada utilizados en Map Run redrive
- Permiso de IAM para utilizar redrive con un Map Run
- Redriving de Map Run en la consola
- Redriving de Map Run mediante la API
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 Redrive 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 la aptitud para redrive de una ejecución, consulte Redrive elegibilidad 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:
-
El Map Run falló debido al error de
States.DataLimitExceeded
. -
Error en Map Run debido a un error de interpolación de datos de JSON,
States.Runtime
. Por ejemplo, seleccionó un nodo JSON inexistente en Filtrar la salida de estado mediante OutputPath.
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 (Mapa), 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 de flujos de trabajo secundarios que produzcan un error o agoten su tiempo de espera en el intento de ejecución original se iniciarán mediante la acción de la API StartExecution. 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. Con estos flujos de trabajo secundarios se utiliza redriven desde el último estado de ItemProcessor que haya provocado que no se ejecutaran correctamente. |
Con las ejecuciones fallidas siempre se puede utilzar redriven. Esto se debe a que las ejecuciones de flujos de trabajo secundarios rápidos siempre se inician como una nueva ejecución mediante la acción de la API StartExecution. |
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 cada redrives individual en la consola y mediante API como GetExecutionHistory y DescribeExecution. Para obtener más información, consulte ¿Examinando redriven ejecuciones. |
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 (Mapa) y Map Run no inició las ejecuciones del flujo de trabajo secundario porque se cumple una de las siguientes condiciones:
|
El Map Run redriven utiliza la entrada del bucket de Amazon S3. |
La entrada se pasa mediante 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.
Para utilizar redrive con un Map Run desde la consola
-
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. -
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.
-
Elija Redrive.
-
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.
-
-
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 utilizar redriven con un Map Run, puede examinar sus detalles de redrive en la consola o mediante las acciones de las API GetExecutionHistory y DescribeExecution. Para obtener más información acerca de cómo examinar una ejecución redriven, consulte ¿Examinando redriven ejecuciones.
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
Después de redriven una ejecución Map, puede examinar sus detalles de redrive en la consola o utilizando la acción de la API DescribeMapRun. Para examinar los detalles de redrive de las ejecuciones de flujos de trabajo estándar en un Map Run, puede utilizar la acción de la API GetExecutionHistory o DescribeExecution. Para obtener más información acerca de cómo examinar una ejecución redriven, consulte ¿Examinando redriven ejecuciones.
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