Recursos de Amazon Simple Workflow Service - Amazon Simple Workflow Service

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.

Recursos de Amazon Simple Workflow Service

Este capítulo ofrece recursos adicionales e información de referencia que resultan útiles cuando se desarrollan flujos de trabajo con Amazon SWF.

Tipos de tiempo de espera de Amazon SWF

Para garantizar que las ejecuciones de flujo de trabajo se ejecuten correctamente, Amazon SWF le permite establecer distintos tipos de tiempos de espera. Algunos tiempos de espera especifican cuánto puede tardar el flujo de trabajo en ejecutarse en su totalidad. Otros tiempos de espera especifican cuánto pueden tardar las tareas de actividad en asignarse a un proceso de trabajo y cuánto pueden tardar en completarse desde el momento de su programación. Todos los tiempos de espera de la API de Amazon SWF se especifican en segundos. Amazon SWF también admite la cadena NONE como valor de tiempo de espera, lo que indica que no se establecerá ningún tiempo de espera.

Para los tiempos de espera relacionados con las tareas de decisión y actividad, Amazon SWF añade un evento al historial de ejecución del flujo de trabajo. Los atributos del evento proporcionan información acerca del tipo de tiempo de espera que tuvo lugar y la tarea de decisión o actividad que se vio afectada. Amazon SWF también programa una tarea de decisión. Cuando el decisor reciba la nueva tarea de decisión, verá el evento de tiempo de espera en el historial y tomará la acción adecuada mediante la convocatoria de la RespondDecisionTaskCompletedacción.

Una tarea se considera abierta desde el momento en que se programa hasta que se cierra. Por tanto, una tarea se registra como abierta mientras un proceso de trabajo la procesa. Una tarea se cierra cuando un proceso de trabajo la registra como Completed, Canceled o Failed. Amazon SWF también puede cerrar una tarea como resultado de un tiempo de espera.

Tiempos de espera de las tareas de decisión y flujo de trabajo

En el siguiente diagrama se muestra cómo los tiempos de espera de decisión y flujo de trabajo están relacionados con la vida útil de un flujo de trabajo:

La vida útil de un flujo de trabajo, con los tiempos de espera

Hay dos tipos de tiempo de espera que son pertinentes para las tareas de decisión y flujo de trabajo:

  • Tiempo de espera de inicio a cierre del flujo de trabajo (timeoutType: START_TO_CLOSE): este tiempo de espera especifica el tiempo máximo que puede tardar en completarse la ejecución de un flujo de trabajo. Se establece como valor predeterminado durante el registro del flujo de trabajo, pero se puede anular con un valor diferente al iniciarse el flujo de trabajo. Si se supera este tiempo de espera, Amazon SWF cierra la ejecución del flujo de trabajo y añade un WorkflowExecutionTimedOuttipo de evento al historial de ejecución del flujo de trabajo. Además de timeoutType, los atributos del evento especifican la childPolicy que se encuentra en vigor para esta ejecución de flujo de trabajo. La política secundaria especifica cómo se controlan las ejecuciones de los flujos de trabajo secundarios si se agota el tiempo de espera de la ejecución de flujo de trabajo principal o termina por otro motivo. Por ejemplo, si childPolicy se establece en TERMINATE, las ejecuciones de flujos de trabajo secundarios se terminarán. Una vez que se haya agotado el tiempo de espera de una ejecución de flujo de trabajo, la única medida que podrá tomar al respecto son las llamadas de visibilidad.

  • Tiempo de espera de inicio a cierre de la tarea de decisión (timeoutType: START_TO_CLOSE): este tiempo de espera especifica el tiempo máximo que el decisor correspondiente puede tardar en completar una tarea de decisión. Se establece durante el registro del tipo de flujo de trabajo. Si se supera este tiempo de espera, la tarea se marca como agotada en el historial de ejecución del flujo de trabajo y Amazon SWF añade un DecisionTaskTimedOuttipo de evento al historial del flujo de trabajo. Los atributos del evento incluirán los ID de los eventos correspondientes al momento en el que se programó esta tarea de decisión (scheduledEventId) y al momento en el que esta se inició (startedEventId). Además de añadir el evento, Amazon SWF también programa una tarea de decisión nueva para alertar al decisor de que se ha agotado el tiempo de espera de dicha tarea de decisión. Tras agotarse este tiempo de espera, un intento de completar la tarea de decisión con tiempo de espera agotado mediante RespondDecisionTaskCompleted producirá un error.

Tiempos de espera de las tareas de actividad

En el siguiente diagrama se muestra cómo los tiempos de espera están relacionados con la vida útil de una tarea de actividad:

La vida útil de una tarea, con los tiempos de espera

Hay cuatro tipos de tiempo de espera que son pertinentes para las tareas de actividad:

  • Tiempo de espera de inicio a cierre de la tarea de actividad (timeoutType: START_TO_CLOSE): este tiempo de espera especifica el tiempo máximo que el proceso de trabajo de una actividad puede tardar en procesar una tarea después de haberla recibido. Los intentos de cerrar una tarea de actividad agotada utilizando RespondActivityTaskCanceledRespondActivityTaskCompleted, y fallarán. RespondActivityTaskFailed

  • Latido de la tarea de actividad (timeoutType: HEARTBEAT): este tiempo de espera especifica el tiempo máximo que se puede ejecutar una tarea antes de indicar su progreso en la acción RecordActivityTaskHeartbeat.

  • Programación de tareas de actividad hasta su inicio (timeoutType: SCHEDULE_TO_START): este tiempo de espera especifica cuánto tiempo espera Amazon SWF antes de agotar el tiempo de espera de la tarea de actividad si no hay procesos de trabajo disponibles para realizarla. Una vez que se agota el tiempo de espera, la tarea caducada no se asignará a otro proceso de trabajo.

  • Programación de tareas de actividad hasta su cierre (timeoutType: SCHEDULE_TO_CLOSE): este tiempo de espera especifica cuánto tiempo puede tardar la tarea desde el momento en que se programe hasta el momento en que se complete. Como práctica recomendada, este valor no debe ser mayor que la suma del tiempo de espera de la tarea y el schedule-to-start tiempo de espera de la tarea start-to-close .

nota

Cada uno de los tipos de tiempo de espera tiene un valor predeterminado, que generalmente se establece en NONE (infinito). El tiempo máximo de cualquier ejecución de actividad se limita a un año, sin embargo.

Puede establecer valores predeterminados para estos durante el registro del tipo de actividad, pero puede anularlos con nuevos valores al programar la tarea de actividad. Cuando se agote uno de estos tiempos de espera, Amazon SWF añadirá un ActivityTaskTimedOuttipo de evento al historial del flujo de trabajo. El atributo de valor timeoutType de este evento especificará cuál de estos tiempos de espera ha tenido lugar. Para cada uno de los tiempos de espera, el valor de timeoutType se muestra entre paréntesis. Los atributos del evento también incluirán los ID de los eventos correspondientes al momento en el que se programó la tarea de actividad (scheduledEventId) y al momento en el que esta se inició (startedEventId). Además de añadir el evento, Amazon SWF también programa una tarea de decisión nueva para alertar al decisor de que se ha agotado el tiempo de espera.

Puntos de conexión de Amazon Simple Workflow Service

En Referencia general de Amazon Web Services se proporciona una lista de las regiones y puntos de conexión actuales de Amazon SWF, junto con los puntos de conexión de otros servicios.

Los dominios de Amazon SWF y todos los flujos de trabajo y actividades relacionados deben existir en la misma región para comunicarse entre sí. Además, los dominios, flujos de trabajo y actividades registrados en una región no existen en otras regiones. Por ejemplo, si crea un dominio denominado «MySampleDominio» tanto en us-east-1 como en us-west-2, existen como dominios independientes: ninguno de los flujos de trabajo, listas de tareas, actividades o datos asociados a sus dominios se comparte entre regiones.

Si utiliza otros AWS recursos en sus flujos de trabajo, como instancias de Amazon EC2, estos también deben existir en la misma región que sus recursos de Amazon SWF. Las únicas excepciones a esto son los servicios que abarcan varias regiones, como Amazon S3 e IAM. Puede obtener acceso a estos servicios desde los flujos de trabajo existentes en cualquier región que los admita.

Documentación adicional para Amazon Simple Workflow Service

Además de esta Guía para desarrolladores, puede que le resulte útil la siguiente documentación.

Referencia de la API de Amazon Simple Workflow Service

La referencia de la API de Amazon Simple Workflow Service proporciona información detallada acerca de la API HTTP de Amazon SWF, incluidas las acciones, las estructuras de solicitud y respuesta y los códigos de error.

AWS Flow Framework Documentación

El AWS Flow Framework es un marco de trabajo de programación que simplifica el proceso de implementación de aplicaciones asincrónicas distribuidas que utiliza Amazon SWF para administrar sus flujos de trabajo y actividades, lo que permite al usuario centrarse en la implementación de la lógica de los flujos de trabajo.

Cada uno AWS Flow Framework está diseñado para funcionar idiomáticamente en el idioma para el que está diseñado, por lo que puede trabajar de forma natural con el idioma que prefiera para implementar flujos de trabajo con todas las ventajas de Amazon SWF.

Existe un marco de AWS flujo para Java. La guía AWS Flow Framework para desarrolladores de Java proporciona información sobre cómo obtener, configurar y utilizar el AWS Flow Framework para Java.

AWS Documentación del SDK

Los kits de desarrollo de AWS software (SDK) proporcionan acceso a Amazon SWF en muchos lenguajes de programación diferentes. Los SDK son muy similares a la API HTTP, pero también proporcionan interfaces de programación específicas del lenguaje para algunas características de Amazon SWF. Puede encontrar más información acerca de cada SDK visitando los siguientes enlaces.

nota

Solo se incluyen aquí los SDK compatibles con Amazon SWF en el momento de redactar este documento. Para obtener una lista completa de los AWS SDK disponibles, visita la página Herramientas para Amazon Web Services.

Java

AWS SDK for Java Proporciona una API de Java para servicios de AWS infraestructura.

Para ver la documentación disponible, consulte la página Documentación de AWS SDK for Java. También puede utilizar estos enlaces para ir directamente a las secciones de Amazon SWF en la referencia del SDK:

JavaScript

AWS SDK for JavaScript Permite a los desarrolladores crear bibliotecas o aplicaciones que utilicen los AWS servicios mediante una easy-to-use API simple y disponible tanto en el navegador como dentro de las aplicaciones Node.js del servidor.

Para ver la documentación disponible, consulte la página Documentación de AWS SDK for JavaScript. También puede utilizar este enlace para ir directamente a la sección de Amazon SWF en la referencia del SDK:

.NET

AWS SDK for .NET Se trata de un único paquete descargable que incluye plantillas de proyectos de Visual Studio, la AWS biblioteca.NET, ejemplos de código de C# y documentación. AWS SDK for .NET Esto facilita a los desarrolladores de Windows la creación de aplicaciones.NET para Amazon SWF y otros servicios.

Para ver la documentación disponible, consulte la página Documentación de AWS SDK for .NET. También puede utilizar estos enlaces para ir directamente a las secciones de Amazon SWF en la referencia del SDK:

PHP

AWS SDK for PHP Proporciona una interfaz de programación PHP para Amazon SWF.

Para ver la documentación disponible, consulte la página Documentación de AWS SDK for PHP. También puede utilizar este enlace para ir directamente a la sección de Amazon SWF en la referencia del SDK:

Python

AWS SDK for Python (Boto) Proporciona una interfaz de programación en Python para Amazon SWF.

Para ver la documentación disponible, consulte Boto: una interfaz Python de Amazon Web Services. También puede ir directamente a las secciones de Amazon SWF en la documentación mediante estos enlaces:

Ruby

AWS SDK for Ruby Proporciona una interfaz de programación Ruby para Amazon SWF.

Para ver la documentación disponible, consulte la página Documentación de AWS SDK for Ruby. También puede utilizar este enlace para ir directamente a la sección de Amazon SWF en la referencia del SDK:

AWS CLI Documentación

The AWS Command Line Interface (AWS CLI) es una herramienta unificada para administrar sus AWS servicios. Con solo una herramienta para descargar y configurar, puede controlar varios AWS servicios desde la línea de comandos y automatizarlos mediante scripts.

Para obtener más información sobre el AWS CLI, consulte la AWS Command Line Interfacepágina.

Para obtener información general acerca de los comandos de Amazon SWF, consulte swf en la Referencia de comandos de la AWS CLI .

Recursos web para Amazon Simple Workflow Service

Hay diversos recursos web que puede utilizar para obtener más información sobre Amazon SWF o para obtener ayuda con el uso del servicio y el desarrollo de flujos de trabajo.

Foro de Amazon SWF

El foro de Amazon SWF proporciona un lugar para hacer preguntas y obtener respuestas de otros desarrolladores de Amazon SWF y miembros del equipo de desarrollo de Amazon SWF en Amazon.

Puede visitar el foro en: Foro: Amazon Simple Workflow Service.

Preguntas frecuentes sobre Amazon SWF

En la sección de preguntas frecuentes sobre Amazon SWF se proporcionan respuestas a preguntas frecuentes sobre Amazon SWF, además de información general de casos de uso comunes, diferencias entre Amazon SWF y otros servicios, etc.

Puede obtener acceso a las preguntas frecuentes aquí: Preguntas frecuentes sobre Amazon SWF.

Vídeos de Amazon SWF

El canal Amazon Web Services YouTube ofrece formación en vídeo sobre todos los servicios web de Amazon, incluido Amazon SWF. Para obtener una lista completa de los vídeos relacionados con Amazon SWF, utilice la siguiente consulta: Simple Workflow in Amazon Web Services

Opciones de migración para Ruby Flow

The AWS Flow Framework for Ruby ya no está en desarrollo activo. Aunque el código existente seguirá funcionando indefinidamente, no habrá características ni versiones nuevas. En este tema, se tratarán las opciones de uso y de migración para seguir trabajando con Amazon SWF y la información sobre cómo migrar a Step Functions.

Opción Descripción

Seguir usando Ruby Flow Framework

Por el momento, Ruby Flow Framework seguirá funcionando. Si no hace nada, el código seguirá funcionando tal como está. Planifique migrar de Ruby AWS Flow Framework a Ruby en un futuro próximo.

Migrar a Java Flow Framework

Java Flow Framework se sigue desarrollando activamente y seguirá recibiendo nuevas características y actualizaciones.

Migrar a Step Functions

Step Functions proporciona una forma de coordinar los componentes de aplicaciones y microservicios distribuidos con flujos de trabajo visuales controlados por una máquina de estado.

Usar la API de SWF directamente, sin Flow Framework Puede seguir trabajando en Ruby y usar la API de SWF directamente en vez de Ruby Flow Framework.

La ventaja que proporciona Flow Framework, tanto para Ruby como para Java, es que le permite centrarse en la lógica del flujo de trabajo. El marco gestiona gran parte de los detalles de la comunicación y la coordinación, y se abstrae parte de la complejidad. Puede seguir teniendo el mismo nivel de abstracción si migra al Java Flow Framework, o puede interactuar directamente con el SDK de Amazon SWF.

Seguir usando el Ruby Flow Framework

El AWS Flow Framework for Ruby seguirá funcionando como lo hace ahora a corto plazo. Si tiene flujos de trabajo escritos AWS Flow Framework para Ruby, estos seguirán funcionando. Sin actualizaciones, soporte ni correcciones de seguridad, lo mejor es disponer de un plan bien definido para llevar a cabo la migración del AWS Flow Framework para Ruby en un futuro próximo.

Migrar al Java Flow Framework

El AWS Flow Framework para Java permanecerá en desarrollo activo. Conceptualmente, el AWS Flow Framework caso de Java es similar al AWS Flow Framework de Ruby: puede seguir centrándose en la lógica del flujo de trabajo y el marco le ayudará a gestionar la lógica de sus decisiones y facilitará la gestión de otros aspectos de Amazon SWF.

Migrar a Step Functions

AWS Step Functions proporciona un servicio similar a Amazon SWF, pero en el que la lógica del flujo de trabajo está controlada por una máquina de estados. Step Functions le permite coordinar los componentes de aplicaciones y microservicios distribuidos mediante flujos de trabajo visuales. La creación de aplicaciones a partir de componentes individuales cada uno de los cuales realiza una función o tarea discreta le permite escalar y modificar las aplicaciones rápidamente. Step Functions proporciona una manera fiable de coordinar los componentes y procesar las funciones de su aplicación. Una consola gráfica proporciona una forma de visualizar los componentes de su aplicación en varios pasos. Activa y monitoriza cada paso de manera automática, y realiza reintentos cuando se producen errores, por lo que su aplicación se ejecuta en orden y según lo previsto en todo momento. Step Functions registra el estado de cada paso, de manera que, cuando algo sale mal, puede diagnosticar y depurar los problemas con rapidez.

En Step Functions, la coordinación de las tareas se administra a través de una máquina de estado escrita en JSON declarativo que se define mediante el Amazon States Language. Al utilizar una máquina de estados, no es necesario escribir ni mantener un programa de decisor para controlar la lógica de la aplicación. Step Functions proporciona un enfoque intuitivo, productivo y ágil para coordinar los componentes de la aplicación mediante flujos de trabajo visuales. Deberías considerar usarlo AWS Step Functions para todas tus nuevas aplicaciones, y Step Functions proporciona una excelente plataforma a la que migrar para los flujos de trabajo que tienes implementados actualmente en Ruby. AWS Flow Framework

Para ayudarle a migrar las tareas a Step Functions, así como a seguir aprovechando sus conocimientos del lenguaje Ruby, Step Functions proporciona un ejemplo de proceso de trabajo de actividad de Ruby. Este ejemplo utiliza las prácticas recomendadas para implementar un proceso de trabajo de actividad y se puede utilizar como plantilla para migrar la lógica de las tareas a Step Functions. Para obtener más información, consulte Ejemplo de proceso de trabajo de actividad en Ruby en la Guía para desarrolladores de AWS Step Functions.

nota

Para muchos clientes, migrar a Step Functions desde Ruby es la mejor opción. AWS Flow Framework Sin embargo, si necesita que las señales intervengan en sus procesos o si necesita lanzar procesos secundarios que devuelvan un resultado a un elemento principal, considere la posibilidad de utilizar directamente la API de Amazon SWF o de migrar a la AWS Flow Framework API para Java.

Para obtener más información al respecto AWS Step Functions, consulte:

Utilizar la API de Amazon SWF directamente

Si bien AWS Flow Framework for Ruby gestiona parte de la complejidad de Amazon SWF, también puede utilizar la API de Amazon SWF directamente. El uso directo de la API le permite crear flujos de trabajo donde tiene control total de la implementación y coordinación de tareas sin tener que preocuparse de las complejidades que hay detrás, como el seguimiento de progresos o el mantenimiento de estados.