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.
Estado del flujo de trabajo de tareas
Un estado Task
("Type": "Task"
) representa una única unidad de trabajo realizada por una máquina de estado. Una tarea realiza un trabajo mediante una actividad o un AWS Lambda función, mediante la integración con otras compatibles Servicios de AWS, o recurriendo a un terceroAPI, como Stripe.
El lenguaje Amazon States representa las tareas estableciendo el tipo de estado Task
y proporcionando a la tarea el nombre del recurso de Amazon (ARN) de la actividad, la función Lambda o el punto final de tercerosAPI. La siguiente definición de estado de tarea invoca una función de Lambda denominada
.HelloFunction
"Lambda Invoke": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"Parameters": {
"Payload.$": "$",
"FunctionName": "arn:aws:lambda:us-east-2
:123456789012
:function:HelloFunction
:$LATEST"
},
"End": true
}
Tipos de tareas
Step Functions es compatible con los siguientes tipos de tareas, que se pueden especificar en una definición de estado de tarea:
Para especificar un tipo de tarea, debe proporcionarlo ARN en el Resource
campo de una definición de estado de tarea. En el ejemplo siguiente se muestra la sintaxis del campo Resource
. Todos los tipos de tareas, excepto el que invoca a un terceroAPI, utilizan la siguiente sintaxis. Para obtener información sobre la sintaxis de la HTTP tarea, consulteLlama a terceros APIs en los flujos de trabajo de Step Functions.
En la definición del estado de la tarea, sustituya el texto en cursiva de la siguiente sintaxis por AWS información específica del recurso.
arn:partition
:service
:region
:account
:task_type
:name
En la lista siguiente, se explican los componentes individuales de esta sintaxis:
-
partition
es el AWS Step Functions partición a utilizar, lo más comúnaws
. -
service
indica el Servicio de AWS se utiliza para ejecutar la tarea y puede tener uno de los siguientes valores:-
states
para una actividad. -
lambda
para una función de Lambda. Si se integra con otros Servicios de AWS, por ejemplo, Amazon SNS o Amazon DynamoDB, utilice o.sns
dynamodb
-
-
region
es el AWS Código de región en el que se encuentra la actividad o estado de Step Functions, tipo de máquina, función Lambda o cualquier otro AWS se ha creado el recurso. -
account
es el Cuenta de AWS ID en el que ha definido el recurso. -
task_type
es el tipo de tarea que se va a ejecutar. Puede ser uno de los siguientes valores:-
activity
: una actividad. -
function
: una función de Lambda. -
: el nombre de un servicio conectado compatible (consulte Integración de servicios con Step Functions).servicename
-
-
name
es el nombre del recurso registrado (nombre de la actividad, nombre de la función Lambda o API acción de servicio).
nota
Step Functions no admite la creación de referencias ARNs entre particiones o regiones. Por ejemplo, aws-cn
no puede invocar tareas en la partición aws
y viceversa.
En las secciones siguientes, se proporcionan más detalles sobre cada tipo de tarea.
Actividad
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.
La actividad Resource
ARNs utiliza la siguiente sintaxis.
arn:partition
:states:region
:account
:activity:name
nota
Debe crear actividades con Step Functions (mediante una CreateActivityAPIacción o la consola de Step Functions
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 mediante AWS Lambda. Para especificar una función Lambda, utilice la función Lambda ARN del campo. Resource
Según el tipo de integración (integración optimizada o AWS SDKintegración) que se utiliza para especificar una función de Lambda, la sintaxis del campo de la función de Lambda varía. Resource
La siguiente sintaxis del campo Resource
es un ejemplo de una integración optimizada con una función de Lambda.
"arn:aws:states:::lambda:invoke"
La siguiente sintaxis Resource
de campo es un ejemplo de AWS SDKintegración con una función Lambda.
"arn:aws:states:::aws-sdk:lambda:invoke"
La siguiente definición del estado Task
muestra un ejemplo de una integración optimizada con la función de Lambda denominada
.HelloWorld
"LambdaState": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"OutputPath": "$.Payload",
"Parameters": {
"Payload.$": "$",
"FunctionName": "arn:aws:lambda:us-east-1:function:HelloWorld:$LATEST
"
},
"Next": "NextState"
}
Una vez completada la función Lambda especificada en el Resource
campo, su salida se envía al estado identificado en el Next
campo (» NextState «).
A compatible Servicio de AWS
Cuando haces referencia a un recurso conectado, Step Functions llama directamente a las API acciones de un servicio compatible. Especifique el servicio y la acción en el campo Resource
.
Los servicios conectados Resource
ARNs utilizan la siguiente sintaxis.
arn:partition
:states:region
:account
:servicename
:APIname
nota
Para crear una conexión sincrónica a un recurso conectado, añádala al .sync
APIname
entrada en el. ARN Para obtener más información, consulte Integración de los servicios de .
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
}
}
}
Campos de estado de tarea
Además de los campos de estado comunes, los estados Task
, disponen de los siguientes campos:
-
Resource
(Obligatorio) -
AURI, especialmente uno ARN que identifica de forma única la tarea específica que se va a ejecutar.
-
Parameters
(opcional) -
Se utiliza para transferir información a las API acciones de los recursos conectados. Los parámetros pueden utilizar una combinación de parámetros estáticos JSON y JsonPath
. Para obtener más información, consulte Pasar parámetros a un servicio API en Step Functions. Credentials
(opcional)-
Especifica un rol de destino que debe asumir la función de ejecución de la máquina de estado antes de invocar el
Resource
especificado. Como alternativa, también puedes especificar un JSONPath valor o una función intrínseca que se resuelva en un IAM rol ARN en tiempo de ejecución en función de la entrada de ejecución. Si especifica un JSONPath valor, debe añadirle el prefijo de la$.
notación.Para ver ejemplos del uso de este campo en el estado
Task
, consulte Ejemplos del campo Credentials de estado de tarea. Para ver un ejemplo del uso de este campo para acceder a una cuenta cruzada AWS recurso de su máquina de estados, consulteAcceso a varias cuentas AWS recursos en Step Functions.nota
Este campo es compatible con los Tipos de tareas que utilizan funciones Lambda y un AWS 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 campoOutputPath
(si existe) antes de utilizarla como salida del estado. Para obtener más información, consulte Procesamiento de entrada y salida. -
ResultSelector
(opcional) -
Pase un conjunto de pares clave-valor, donde los valores sean estáticos o se seleccionen 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 de máquina de estado que usan 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) -
Especifica el tiempo máximo que puede ejecutarse una actividad o tarea antes de que se agote el tiempo de espera y se produzca un error States.Timeout. El valor del tiempo de inactividad debe ser un número entero positivo, distinto de cero. El valor predeterminado es
99999999
.El tiempo de inactividad empieza a contar cuando se inicia la tarea, por ejemplo, cuando se registra
ActivityStarted
oLambdaFunctionStarted
en el historial de eventos de ejecución. En las actividades, el tiempo empieza a contar cuandoGetActivityTask
recibe un token y se registraActivityStarted
en el historial de eventos de ejecución.Cuando se inicia una tarea, Step Functions espera a que el proceso de trabajo de la tarea o actividad responda correctamente o no dentro del período
TimeoutSeconds
especificado. Si el proceso de trabajo de la tarea o actividad no responde dentro de este tiempo, Step Functions marca la ejecución del flujo de trabajo como fallida.nota
HTTPel tiempo de espera de la tarea tiene un máximo de 60 segundos, incluso si
TimeoutSeconds
supera ese límite. Consulte Cuotas relacionadas con la HTTP tarea -
TimeoutSecondsPath
(opcional) -
Si desea proporcionar un valor de tiempo de espera de forma dinámica a partir de la entrada de estado con una ruta de referencia, utilice
TimeoutSecondsPath
. Una vez resuelta, la ruta de referencia debe seleccionar campos cuyos valores sean enteros positivos.nota
Un estado
Task
no puede incluir tantoTimeoutSeconds
comoTimeoutSecondsPath
. HTTPel tiempo de espera de la tarea tiene un máximo de 60 segundos, incluso si elTimeoutSecondsPath
valor supera ese límite. -
HeartbeatSeconds
(opcional) -
Determina la frecuencia de las señales de latido que envía un proceso de trabajo de actividad durante la ejecución de una tarea. Los latidos indican que una tarea aún se está ejecutando y necesita más tiempo para completarse. Los latidos impiden que se agote el tiempo de espera de una actividad o tarea durante la duración de
TimeoutSeconds
.HeartbeatSeconds
debe ser un valor entero positivo, distinto de cero, inferior al valor del campoTimeoutSeconds
. El valor predeterminado es99999999
. Si transcurre más tiempo que los segundos especificados entre los latidos de la tarea, el estado de la tarea produce el error States.Timeout.En las actividades, el tiempo empieza a contar cuando
GetActivityTask
recibe un token y se registraActivityStarted
en el historial de eventos de ejecución. -
HeartbeatSecondsPath
(opcional) -
Si desea proporcionar un valor de latido de forma dinámica desde la entrada de estado mediante una ruta de referencia, utilice
HeartbeatSecondsPath
. Una vez resuelta, la ruta de referencia debe seleccionar campos cuyos valores sean enteros positivos.nota
Un estado
Task
no puede incluir tantoHeartbeatSeconds
comoHeartbeatSecondsPath
.
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
.
Ejemplos de definición de estado de tarea
En los siguientes ejemplos se muestra cómo puede especificar la definición de estado de tarea en función de sus necesidades.
Tiempos de espera de estado de tarea e intervalos de latido
Es aconsejable definir un valor de tiempo de espera y un intervalo de latido para actividades de ejecución prolongada. Para hacer esto se puede especificar los valores de tiempo de espera y latido o configurarlos de forma dinámica.
Ejemplo de notificación de latido y tiempo de espera estático
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 latido y tiempo de espera dinámico
En este ejemplo, cuando el AWS Glue se complete el trabajo, se ejecutará el siguiente estado.
Si esta tarea no se completa dentro del intervalo establecido dinámicamente por el AWS Glue
trabajo, la tarea se marca comofailed
.
"GlueJobTask": {
"Type": "Task",
"Resource": "arn:aws:states:::glue:startJobRun.sync",
"Parameters": {
"JobName": "myGlueJob"
},
"TimeoutSecondsPath": "$.params.maxTime",
"Next": "NextState"
}
Ejemplos del campo Credentials de estado de tarea
Especificar un rol codificado IAM ARN
El siguiente ejemplo especifica una IAM función de destino que debe asumir la función de ejecución de una máquina de estado para acceder a una función Lambda multicuenta denominada. Echo
En este ejemplo, el rol de destino ARN se especifica como un valor codificado.
{
"StartAt": "Cross-account call",
"States": {
"Cross-account call": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"Credentials": {
"RoleArn": "arn:aws:iam::111122223333:role/LambdaRole"
},
"Parameters": {
"FunctionName": "arn:aws:lambda:us-east-2:111122223333:function:Echo
"
},
"End": true
}
}
}
Especificar JSONPath como rol IAM ARN
El siguiente ejemplo especifica un JSONPath valor, que se convertirá en un IAM rol ARN en tiempo de ejecución.
{
"StartAt": "Lambda",
"States": {
"Lambda": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"Credentials": {
"RoleArn.$": "$.roleArn"
},
...
}
}
}
Especificar una función intrínseca como IAM rol ARN
En el siguiente ejemplo, se utiliza la función States.Formatintrínseca, que se convierte en un IAM rol ARN en tiempo de ejecución.
{
"StartAt": "Lambda",
"States": {
"Lambda": {
"Type": "Task",
"Resource": "arn:aws:states:::lambda:invoke",
"Credentials": {
"RoleArn.$": "States.Format('arn:aws:iam::{}:role/ROLENAME', $.accountId)"
},
...
}
}
}