Task - 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.

Task

Un estado Task ("Type": "Task") representa una única unidad de trabajo realizada por una máquina de estado.

Todo el trabajo de la máquina de estado se realiza a través de tareas. Una tarea realiza trabajo mediante una actividad o una función de AWS Lambda, o pasando parámetros a las acciones de la API de otros servicios.

AWS Step Functionspuede invocar funciones Lambda directamente desde un estado de tarea. Una función Lambda es una tarea nativa en la nube que se ejecuta enAWS Lambda. Puede escribir funciones Lambda en diversos lenguajes de programación, a través de laAWS Management Consoleo cargando código a Lambda. Para obtener más información, consulte Creación de un estado de Step FunctionsMachineUso de Lambda.

nota

Step Functions pueden coordinar algunosAWSdirectamente desde un estado de tarea. Para obtener más información, consulte Trabajar con otros servicios.

Una actividad se compone del código del programa que espera a que un operador realice una acción o proporcione datos de entrada. Puede alojar actividades en Amazon EC2, en Amazon ECS o incluso en dispositivos móviles. Actividades sondeo Step Functions usando elGetActivityTaskySendTaskSuccess,SendTaskFailure, ySendTaskHeartbeatAcciones de la API.

El Lenguaje de estados de Amazon representa tareas estableciendo el tipo de estado enTasky proporcionando a la tarea el nombre de recurso de Amazon (ARN) de la actividad o la función Lambda.

Además de los campos de estado comunes, los estados Task, disponen de los siguientes campos:

Resource (Obligatorio)

Un URI, en concreto, un ARN que identifica de forma inequívoca la tarea específica que se va a ejecutar.

Parameters (Opcional)

Se utiliza para pasar información a las acciones de la API de los recursos conectados. Los parámetros pueden utilizar una combinación de JsonPath y JSON estático. Para obtener más información, consulte Cómo pasar parámetros a una API de servicio.

ResultPath (Opcional)

Especifica dónde se colocan (en la entrada) los resultados de la ejecución de la tarea especificada en Resource. La entrada se filtra según el contenido del campo OutputPath (si existe) antes de utilizarla como salida del estado. Para obtener más información, consulte Procesamiento de entrada y salida.

ResultSelector (Opcional)

Pase una colección de pares de valores clave, donde los valores son estáticos o seleccionados del resultado. Para obtener más información, consulte ResultSelector.

Retry (Opcional)

Una matriz de objetos, denominados "reintentadores", que definen una política de reintentos si el estado encuentra errores en tiempo de ejecución. Para obtener más información, consulte Ejemplos con Retry y Catch.

Catch (Opcional)

Una matriz de objetos, denominados "receptores", que definen un estado alternativo. Este estado se ejecuta si el estado encuentra errores en tiempo de ejecución y su política de reintentos está agotada o no se ha definido. Para obtener más información, consulte Estados alternativos.

TimeoutSeconds (Opcional)

Si la tarea se ejecuta durante más tiempo que los segundos especificados, este estado produce el error States.Timeout. Debe ser un número entero positivo, distinto de cero. Si no se proporciona, el valor predeterminado es 99999999. El tiempo empieza a contar cuando se inicia la tarea, por ejemplo, cuando ActivityStarted o LambdaFunctionStarted se registran en el Execution event history (Historial de eventos de ejecución).

TimeoutSecondsPath (Opcional)

Si desea proporcionar un valor de tiempo de espera dinámicamente desde la entrada de estado utilizando una ruta de referencia, useTimeoutSecondsPath. Cuando se resuelve, la ruta de referencia debe seleccionar campos cuyos valores sean enteros positivos.

nota

ATaskel estado no puede incluir tantoTimeoutSecondsyTimeoutSecondsPath

HeartbeatSeconds (Opcional)

Si transcurre más tiempo que los segundos especificados entre los latidos de la tarea, este estado produce el error States.Timeout. Debe ser un número entero positivo, distinto de cero e inferior al número de segundos especificado en el campo TimeoutSeconds. Si no se proporciona, el valor predeterminado es 99999999. En las actividades, el tiempo empieza a contar cuando GetActivityTask recibe un token y ActivityStarted se registra en el Execution event history (Historial de eventos de ejecución).

HeartbeatSecondsPath (Opcional)

Si desea proporcionar un valor de latido dinámicamente desde la entrada de estado usando una ruta de referencia, useHeartbeatSecondsPath. Cuando se resuelve, la ruta de referencia debe seleccionar campos cuyos valores sean enteros positivos.

nota

ATaskel estado no puede incluir tantoHeartbeatSecondsyHeartbeatSecondsPath

Un estado Task debe establecer el campo End en true si el estado finaliza su ejecución, o bien debe proporcionar un estado en el campo Next que se ejecuta cuando finaliza el estado Task.

Tiempos de espera del estado de la tarea e intervalos de

Es aconsejable definir un valor de tiempo de espera y un intervalo de latido para actividades de ejecución prolongada. Esto se puede hacer especificando los valores de tiempo de espera y latido, o configurándolos dinámicamente.

Ejemplo de notificación de tiempo de espera estático y latido

Cuando se complete HelloWorld, se ejecutará el siguiente estado (que aquí se llama NextState).

Si esta tarea no puede completarse en un plazo de 300 segundos o no envía notificaciones de latido a intervalos de 60 segundos, la tarea se marca como failed.

"ActivityState": { "Type": "Task", "Resource": "arn:aws:states:us-east-1:123456789012:activity:HelloWorld", "TimeoutSeconds": 300, "HeartbeatSeconds": 60, "Next": "NextState" }

Ejemplo de notificación de tiempo de espera de tarea dinámica y latidos

En este ejemplo, cuando elAWS GlueEl siguiente estado se ejecutará.

Si esta tarea no se completa dentro del intervalo establecido dinámicamente por elAWS Glue, o no envía notificaciones de latidos para el intervalo establecido por elAWS Glue, la tarea se marca comofailed.

"ActivityState": { "Type": "Task", "Resource": "arn:aws:states:::glue:startJobRun.sync", "Parameters": { "JobName": "myGlueJob" }, "TimeoutSecondsPath": "$.params.maxTime", "HeartbeatSecondsPath": "$.params.heartbeat", "Next": "NextState" }

Especificación de ARN de recursos en tareas

El ARN del campo Resource se especifica usando el siguiente patrón.

arn:partition:service:region:account:task_type:name

En este patrón:

  • partition es la partición de AWS Step Functions que se utiliza, normalmente aws.

  • service indica el servicio de AWS utilizado para ejecutar la tarea y es:

  • regiones elAWSRegiónEn el que se ha creado el tipo de máquina de estado o la actividad de Step Functions o la función Lambda.

  • account es su ID de cuenta de AWS.

  • task_type es el tipo de tarea que se va a ejecutar. Es uno de los valores siguientes:

  • namees el nombre del recurso registrado (el nombre de la actividad, el nombre de la función Lambda o la acción de la API de servicio).

nota

Step Functions no admiten las referencias de ARN entre particiones, regiones o cuentas (por ejemplo, «aws-cn» no puede invocar tareas en la partición «aws» y viceversa).

Tipos de tareas

Se admiten los siguientes tipos de tareas:

En las secciones siguientes, se proporcionan más detalles sobre cada tipo de tarea.

Activity

Las actividades representan procesos o subprocesos de trabajo implementados y alojados por usted, que realizan una tarea específica. Solo son compatibles con los flujos de trabajo estándar, pero no con los flujos de trabajo rápidos.

Los ARN de resource de actividad usan la siguiente sintaxis.

arn:partition:states:region:account:activity:name

Para obtener más información sobre estos campos, consulte Especificación de ARN de recursos en tareas.

nota

Debe crear actividades con Step Functions (usando unCreateActivity, la acción de la API o elconsola Step Functions) antes de su primer uso.

Para obtener más información sobre la creación de una actividad y la implementación de procesos de trabajo, consulte Actividades.

Funciones de Lambda

Las tareas Lambda ejecutan una función medianteAWS Lambda. Para especificar una función Lambda, utilice el ARN de la función Lambda en elResourcefield.

Lambda functionResourceLos ARN de la sintaxis siguiente.

arn:partition:lambda:region:account:function:function_name

Para obtener más información sobre estos campos, consulte Especificación de ARN de recursos en tareas.

Por ejemplo:

"LambdaState": { "Type": "Task", "Resource": "arn:aws:lambda:us-east-1:123456789012:function:HelloWorld", "Next": "NextState" }

Después de la función Lambda especificada en elResource, su salida se envía al estado identificado en el campoNext(«nextState»).

Un servicio de AWS compatible

Cuando se hace referencia a un recurso conectado, Step Functions llaman directamente a las acciones de la API de un servicio compatible. Especifique el servicio y la acción en el campo Resource.

Los ARN de Resource de los servicios conectados usan la siguiente sintaxis.

arn:partition:states:region:account:servicename:APIname
nota

Para crear una conexión síncrona a un recurso conectado, añada .sync a la entrada APIname en el ARN. Para obtener más información, consulte Trabajar con otros servicios.

Por ejemplo:

{ "StartAt": "BATCH_JOB", "States": { "BATCH_JOB": { "Type": "Task", "Resource": "arn:aws:states:::batch:submitJob.sync", "Parameters": { "JobDefinition": "preprocessing", "JobName": "PreprocessingBatchJob", "JobQueue": "SecondaryQueue", "Parameters.$": "$.batchjob.parameters", "RetryStrategy": { "attempts": 5 } }, "End": true } } }