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.
Más información sobre las actividades de Step Functions
Con las actividades de Step Functions, puede configurar una tarea en su máquina de estados en la que el trabajo real lo realice un trabajador que esté fuera de Step Functions. Por ejemplo, podría tener un programa de trabajo ejecutándose en Amazon Elastic Compute Cloud (AmazonEC2), Amazon Elastic Container Service (AmazonECS) o incluso en dispositivos móviles.
Información general
En AWS Step Functions, las actividades son una forma de asociar el código que se ejecuta en algún lugar (lo que se conoce como trabajador de actividades) con una tarea específica en una máquina de estados. Puede crear una actividad con la consola de Step Functions o llamando a CreateActivity
. Esto proporciona un nombre de recurso de Amazon (ARN) para el estado de la tarea. Úselo ARN para sondear el estado de la tarea correspondiente al trabajo de su trabajador en actividad.
nota
Las actividades no tienen control de versiones y se espera que sean compatibles con versiones anteriores. Si debe realizar un cambio incompatible con versiones anteriores en una actividad, cree una nueva actividad en Step Functions utilizando un nombre único.
Un trabajador de actividades puede ser una aplicación que se ejecuta en una EC2 instancia de Amazon, un AWS Lambda
función, un dispositivo móvil: cualquier aplicación que pueda establecer una HTTP conexión, alojada en cualquier lugar. Cuando Step Functions llega a un estado de tarea de actividad, el flujo de trabajo espera a que un proceso de trabajo de actividad realice un sondeo de una tarea. Un trabajador de la actividad sondea Step Functions mediante GetActivityTask
el uso y el envío ARN de la actividad relacionada. GetActivityTask
devuelve una respuesta que incluye input
(una cadena de JSON entrada para la tarea) y un taskToken
(un identificador único para la tarea). Después de que el proceso de trabajo de actividad completa su trabajo, puede proporcionar un informe de si la operación se ha realizado correcta o incorrectamente mediante SendTaskSuccess
o SendTaskFailure
. Estas dos llamadas usan el taskToken
que proporciona GetActivityTask
para asociar el resultado con esa tarea.
APIsRelacionado con las tareas de la actividad
Step Functions permite APIs crear y enumerar actividades, solicitar una tarea y gestionar el flujo de su máquina de estados en función de los resultados de su trabajador.
Las siguientes son las Step Functions APIs relacionadas con las actividades:
nota
El sondeo de las tareas de actividad con GetActivityTask
pueden provocar latencia en algunas implementaciones. Consulte Evitar la latencia al sondear las tareas de actividad.
Espera para que finalice una tarea de actividad
Establezca TimeoutSeconds
en la definición de la tarea para configurar cuánto tiempo espera un estado. Para mantener la tarea activa y en espera, envíe periódicamente un latido de su proceso de trabajo de actividad mediante SendTaskHeartbeat
dentro del tiempo configurado en TimeoutSeconds
. Si configura un tiempo de espera largo y envía activamente un latido, una actividad en Step Functions puede esperar hasta un año a que se complete una ejecución.
Por ejemplo, si necesita un flujo de trabajo que espere el resultado de un proceso largo, haga lo siguiente:
-
Cree una actividad con la consola o mediante
CreateActivity
. Tome nota de la actividadARN. -
Haga referencia a eso ARN en el estado de una tarea de actividad en la definición y el conjunto de su máquina de estados
TimeoutSeconds
. -
Implemente un trabajador de actividades que sondee en busca de trabajo utilizando esa actividad
GetActivityTask
ARN y haciendo referencia a ella. -
Utilice
SendTaskHeartbeat
periódicamente dentro del tiempo establecido enHeartbeatSeconds
en la definición de tarea de máquina de estado para evitar que se agote el tiempo de espera de la tarea. -
Comience una ejecución de su máquina de estado.
-
Comience su proceso de trabajo de actividad.
La ejecución se pone en pausa en el estado de la tarea de actividad y espera a que el proceso de trabajo de actividad realice un sondeo de una tarea. Una vez que se proporciona un taskToken
a su proceso de trabajo de actividad, su flujo de trabajo esperará a que SendTaskSuccess
o SendTaskFailure
proporcione un estado. Si la ejecución no recibe ninguno de ellos ni una llamada a SendTaskHeartbeat
antes del tiempo configurado en TimeoutSeconds
, se producirá un error en la ejecución y el historial de ejecución contendrá un evento ExecutionTimedOut
.
Ejemplo: Activity Worker en Ruby
En el siguiente ejemplo, el código de Activity Worker implementa un patrón consumidor-productor con un número configurable de subprocesos para los encuestadores y los trabajadores activos. Los hilos de sondeo sondean constantemente durante mucho tiempo la tarea de actividad en Step Functions. Cuando se recupera una tarea de actividad, pasa a través de una cola de bloqueo limitada para que la retome el hilo de actividad.
-
Para obtener más información, consulte la .AWS SDK for Ruby APIReferencia.
-
Para descargar este código y los recursos relacionados, consulte el repositorio step-functions-ruby-activity-worker
en GitHub.
El siguiente código es el punto de entrada principal para este ejemplo de Ruby activity Worker.
require_relative '
../lib/step_functions/activity
' credentials = Aws::SharedCredentials.new region = 'us-west-2
' activity_arn = 'ACTIVITY_ARN
' activity = StepFunctions::Activity.new( credentials: credentials, region: region, activity_arn: activity_arn, workers_count: 1, pollers_count: 1, heartbeat_delay: 30 ) # Start method block contains your custom implementation to process the input activity.start do |input| { result: :SUCCESS, echo: input['value'] } end
Debe especificar su actividad ARN y región. El código incluye valores predeterminados que puede configurar, como el número de subprocesos y el retraso del latido.
Elemento | Descripción |
---|---|
|
Ruta relativa al siguiente código de proceso de trabajo de actividad de ejemplo. |
|
AWS Región de tu actividad. |
|
Número de subprocesos del proceso de trabajo de actividad. Para la mayoría de las implementaciones, deberían ser suficientes entre 10 y 20 subprocesos. Cuanto más tiempo tarde la actividad en procesarse, más subprocesos podría necesitar. Para realizar una estimación, multiplique el número de actividades de proceso por segundo por la latencia de procesamiento de actividades del percentil 99th, en segundos. |
|
Número de subprocesos de los sondeadores. Deberían ser suficientes entre 10 y 20 subprocesos para la mayoría de las implementaciones. |
|
Retraso entre latidos, en segundos. |
input |
Lógica de implementación de la actividad. |
Siguientes pasos
Para obtener información más detallada sobre la creación de máquinas de estado que utilizan trabajadores de una actividad, consulte: