Información general

P: ¿Qué es AWS Step Functions?

AWS Step Functions es un servicio completamente administrado que facilita la coordinación de componentes de aplicaciones y microservicios distribuidos usando flujos de trabajo visuales. La creación de aplicaciones a partir de componentes individuales que realizan cada uno una función discreta le permite escalar con facilidad y modificar las aplicaciones con rapidez. Step Functions es una manera fiable de coordinar los componentes y procesar las funciones de su aplicación. Step Functions proporciona una consola gráfica con la que ordenar y visualizar los componentes de su aplicación en varios pasos. De este modo, crear y ejecutar aplicaciones multipaso resulta sencillo. Step Functions activa y monitorea cada paso de manera automática; además, realiza reintentos cuando se producen errores, por lo que su aplicación se ejecuta en orden y según lo previsto. Step Functions registra el estado de cada paso, de manera que, cuando algo sale mal, puede diagnosticar y depurar los problemas con rapidez. Puede cambiar y agregar pasos sin escribir código, lo que le permite evolucionar la aplicación con facilidad e innovar con mayor velocidad.

P: ¿Qué beneficios tiene diseñar mi aplicación mediante la organización?

El desglose de una aplicación en componentes (o pasos) de servicio garantiza que el error de un componente no desactive el sistema completo, que cada componente se escale de forma independiente, y que los componentes se puedan actualizar sin necesidad de volver a implementar el sistema completo tras cada modificación. La coordinación de componentes de servicio implica la administración de las dependencias de ejecución, la programación y la concurrencia de acuerdo con el flujo lógico de la aplicación. En una aplicación de este tipo, los desarrolladores pueden utilizar la organización del servicio para hacerlo y gestionar los errores.

P: ¿Cuáles son algunos de los casos de uso más comunes de AWS Step Functions?

AWS Step Functions ayuda con cualquier problema informático o proceso de negocio que se puede subdividir en una serie de pasos. También es útil para crear flujos de trabajo integrales para administrar trabajos con interdependencias. Entre los casos de uso comunes se incluyen los siguientes:

  • Procesamiento de datos: consolide datos de múltiples bases de datos en informes unificados, mejore y reduzca grandes conjuntos de datos a formatos útiles, o coordine el análisis de varios pasos y los flujos de trabajo de aprendizaje automático.
  • Automatización de TI y DevOps: cree herramientas para la integración y la implementación continuas, o cree aplicaciones controladas por eventos que respondan automáticamente a los cambios en la infraestructura.
  • E-commerce: automatice procesos de negocio críticos, como el procesamiento de pedidos y el seguimiento de inventario.
  • Aplicaciones web: implemente procesos de registro de usuarios sólidos y autenticación de inicio de sesión.

Para obtener más información, explore los casos de uso y los testimonios de los clientes de AWS Step Functions.

P: ¿Cómo funciona AWS Step Functions?

Con el uso de AWS Step Functions, se definen máquinas de estado que describen el flujo de trabajo como una serie de pasos, sus relaciones y sus entradas y salidas. Las máquinas de estado contienen una serie de estados, cada uno de los cuales representa un paso individual en un diagrama de flujo de trabajo. Los estados pueden realizar el trabajo, tomar decisiones, pasar parámetros, iniciar la ejecución paralela, administrar los tiempos de espera o finalizar su flujo de trabajo con o sin éxito. La consola visual traza automáticamente cada estado en el orden de ejecución, lo que facilita el diseño de aplicaciones multipaso. La consola resalta el estado en tiempo real de cada paso y proporciona un historial detallado de cada ejecución. Para obtener más información, consulte Funcionamiento de Step Functions en la Guía para desarrolladores de AWS Step Functions.

P: ¿De qué forma se conecta AWS Step Functions a mis recursos?

Puede configurar sus máquinas de estado para que realicen el trabajo mediante el uso de tareas de actividad y tareas de servicio. Las tareas de actividad le permiten asignar un paso específico en su flujo de trabajo al código que se ejecuta en otro lugar (conocido como trabajador de actividad). Un trabajador de actividad puede ser cualquier aplicación que pueda hacer una conexión HTTP, alojada en cualquier lugar. Por ejemplo, los trabajadores de actividad pueden ejecutarse en una instancia Amazon EC2, en un dispositivo móvil o en un servidor local. El trabajador de actividad realiza un sondeo de Step Functions para el trabajo, toma cualquier contenido de entrada de Step Functions, realiza el trabajo usando su código y devuelve los resultados. Dado que los trabajadores de actividad solicitan trabajo, es fácil utilizar a los trabajadores que se implementan detrás de un firewall.

Las tareas de servicio le permiten conectar un paso de su flujo de trabajo a un servicio de AWS compatible. Step Functions envía las solicitudes a otros servicios a fin de que puedan realizar acciones para su flujo de trabajo, espera a que la tarea de servicio se complete y luego continúa con el siguiente paso.

Una máquina de estado de AWS Step Functions puede contener combinaciones de tareas de actividad y de tareas de servicio. Las aplicaciones de AWS Step Functions también pueden combinar trabajadores de actividad que se ejecutan en un centro de datos con tareas de servicio que se ejecutan en la nube. Los trabajadores del centro de datos siguen ejecutándose como siempre, junto con cualquier tarea de servicio basada en la nube.

P: ¿Cómo puedo comenzar a utilizar AWS Step Functions?

Existen varias maneras para comenzar a utilizar AWS Step Functions, entre ellas están las siguientes:

P: ¿Qué lenguaje utiliza AWS Step Functions?

Las máquinas de estado de AWS Step Functions se definen en JSON mediante el uso del lenguaje declarativo Amazon States Language. Para crear un trabajador de actividad, puede utilizar cualquier lenguaje de programación, siempre que pueda comunicarse con AWS Step Functions utilizando las API de servicios web. Por comodidad, puede usar un AWS SDK en el lenguaje que elija. AWS Lambda es compatible con código escrito en Node.js (JavaScript), Python, Golang (Go) y C# (con el tiempo de ejecución de .NET Core y otros lenguajes). Para obtener más información sobre el modelo de programación de Lambda, consulte la Guía para desarrolladores de AWS Lambda.

P: Mi flujo de trabajo tiene algunas de las propiedades de Standard Workflows y algunas propiedades de Express Workflows. ¿Cómo obtengo lo mejor de ambos?

Puede componer los dos tipos de flujo de trabajo: Express Workflows puede ejecutarse como un flujo de trabajo secundario de Standard Workflows. Express Workflow se invoca desde un estado de tarea en el flujo de trabajo de orquestación principal y tiene éxito o falla en su conjunto desde la perspectiva principal. Está sujeto a la política de reintento principal para esa tarea. También puede llamar a Express Workflows desde un Express Workflow, siempre que todos los flujos de trabajo no excedan el límite de duración principal. Puede optar por factorizar sus flujos de trabajo de esta manera si su caso de uso tiene una combinación de pasos de alta velocidad de larga duración o exactamente una sola vez y de corta duración. 

Comparaciones

P: ¿Cuándo debería utilizar AWS Step Functions en lugar de Amazon SQS?

Debe plantearse el uso de AWS Step Functions cuando necesite coordinar componentes de servicio en el desarrollo de aplicaciones auditables y muy escalables. Debe plantearse el uso de Amazon Simple Queue Service (Amazon SQS) cuando necesite una cola alojada de confianza y muy escalable para enviar, almacenar y recibir mensajes entre servicios. Step Functions lleva un seguimiento de todas las tareas y los eventos de una aplicación. En Amazon SQS debe implementar su propio sistema de seguimiento del nivel de la aplicación, especialmente si la aplicación utiliza varias colas. Las API de visibilidad y la consola de Step Functions proporcionan una vista centrada en la aplicación que permite buscar ejecuciones, ver los detalles de una ejecución y administrar ejecuciones. Con Amazon SQS, es necesario implementar esa funcionalidad adicional. Step Functions ofrece varias características para facilitar el desarrollo de aplicaciones, como la transmisión de datos entre tareas y la flexibilidad al distribuir tareas. Con Amazon SQS, tenemos que implementar alguna funcionalidad a nivel de aplicación. Mientras que puede utilizar Amazon SQS para crear flujos de trabajo básicos y coordinar su aplicación distribuida, Step Functions le proporciona esta facilidad de forma estándar, además de otras capacidades a nivel de aplicación.

P: ¿Cuándo debería utilizar AWS Step Functions en lugar de Amazon Simple Workflow Service (SWF)?

Debería plantearse el uso de AWS Step Functions para todas las aplicaciones nuevas, ya que proporciona un enfoque más ágil y productivo para la coordinación de componentes de la aplicación mediante flujos de trabajo visuales. Si requiere que en sus procesos intervengan señales externas o si desea lanzar procesos secundarios que devuelvan un resultado a uno principal, debería tener en cuenta el uso de Amazon Simple Workflow Service (Amazon SWF). Con Amazon SWF, en vez de escribir máquinas de estados en JSON declarativo, escribe un programa Decider para separar los pasos de actividad de los pasos de decisión. Esto le aporta control absoluto sobre la lógica de organización, pero incrementa la complejidad de desarrollar aplicaciones. Puede escribir programas Decider en el lenguaje de programación que desee, o puede utilizar el marco Flow para usar construcciones de programación que estructuren interacciones asíncronas. 

P: ¿Cuándo debo usar Express Workflows en lugar de Standard Workflows?

Debe usar Express Workflows para cargas de trabajo con altas tasas de eventos y duraciones cortas. Express Workflows admite tasas de eventos de más de 100 000 por segundo. Express Workflows tiene una duración máxima de cinco minutos. Express Workflows garantiza la ejecución de “al menos una vez” de cada paso del flujo de trabajo. Los flujos de trabajo fallidos deben volver a ejecutarse desde el principio. Express Workflows admite todas las integraciones de servicios. Express Workflows no admite actividades, ejecución de trabajos (.sync) y patrones de devolución de llamada.

Standard Workflows en AWS Step Functions son más adecuados para flujos de trabajo de larga duración, duraderos y auditables en los que repetir los pasos de flujo de trabajo es costoso (por ejemplo, reiniciar una transcodificación de medios de larga duración) o perjudicial (por ejemplo, cargar una tarjeta de crédito dos veces). Ejemplos de cargas de trabajo incluyen entrenamiento e implementación de modelos de aprendizaje automático, generación de informes, facturación, procesamiento de tarjetas de crédito, y procesos de pedido y cumplimiento. Standard Workflows garantiza exactamente una vez la ejecución de cada paso del flujo de trabajo, con una duración máxima de un año. Estos flujos de trabajo rastrean y almacenan información detallada paso a paso sobre cada flujo de trabajo que puede inspeccionar durante y después de la ejecución del flujo de trabajo. Standard Workflows admite todas las integraciones de servicios, actividades y patrones de diseño.

P: ¿Cuándo debo usar AWS Step Functions en lugar de AWS CodePipeline?

Debe considerar el uso de AWS CodePipeline cuando esté automatizando la publicación de cambios de software o infraestructura y desee aprovechar las integraciones con servicios CI/CD como CodeBuild, CodeDeploy y soluciones de CI/CD de terceros como parte de su flujo de trabajo de lanzamiento. Está basado en las prácticas de implementación de Amazon y solo existe una instancia de cada canalización y cada una se compone de etapas secuenciales. Estas etapas sirven como un mecanismo de bloqueo para garantizar que solo una ejecución única fluya a través de una sección crítica de la canalización en un momento dado. El soporte de CodePipeline para aprobaciones manuales tiene un lanzamiento dentro de la etapa y permite la prueba manual mientras las etapas anteriores continúan su ejecución. El modelo basado en etapas también le permite pausar todos los lanzamientos sin generar una cola de lanzamientos extensa. CodePipeline libera de manera inteligente los cambios de software más recientes para que pueda evitar perder tiempo en versiones obsoletas.

Por otro lado, Step Functions admite de forma nativa varias instancias de una máquina de estado que se ejecutan simultáneamente. Esta capacidad se presta para respaldar a los equipos de desarrolladores para que realicen integraciones al crear y probar sus cambios al mismo tiempo. Sin embargo, administrar implementaciones requiere soluciones personalizadas para controlar el orden de las implementaciones. Debe tener en cuenta AWS Step Functions cuando necesite crear flujos de trabajo de integración continua utilizando patrones como la gestión de errores, la paralelización y la derivación. Step Functions admite la integración de servicios con AWS CodeBuild, Amazon ECS, Amazon EMR, AWS Glue y otros servicios. Si su flujo de trabajo requiere que cree cambios de software o ejecute aplicaciones de procesamiento de datos, debe considerar usar Step Functions con las integraciones de servicios AWS CodeBuild, Amazon ECS, Amazon EMR y AWS Glue.

Integración

P: ¿Cómo se conecta y coordina AWS Step Functions con otros servicios de AWS?

Los flujos de trabajo que se crean con AWS Step Functions pueden conectar y coordinar otros servicios de AWS mediante el uso de tareas de servicio. Puede, por ejemplo, realizar lo siguiente:

  • Invocar una función de AWS Lambda.
  • Ejecutar una tarea de AWS Fargate o de Amazon Elastic Container Service.
  • Obtener un elemento existente de una tabla Amazon DynamoDB o colocar un nuevo elemento en una tabla DynamoDB.
  • Enviar un trabajo de AWS Batch y esperar que se complete.
  • Publicar un mensaje en un tema de Amazon SNS.
  • Enviar un mensaje a una cola de Amazon SQS.
  • Iniciar una ejecución de trabajo de AWS Glue.
  • Crear un trabajo de Amazon SageMaker para entrenar a un modelo de aprendizaje automático o transformar por lotes a un conjunto de datos.

Para obtener más información sobre el uso de Step Functions para conectarse a otros servicios de AWS, consulte la Guía para desarrolladores de AWS Step Functions. También puede crear tareas en sus máquinas de estado que ejecutan aplicaciones, consulte las preguntas frecuentes en la sección Información general: ¿De qué forma se conecta AWS Step Functions a mis recursos?

P: ¿De qué manera funciona AWS Step Functions con Amazon API Gateway?

Puede asociar las API de Step Functions con Amazon API Gateway para que estas API invoquen sus máquinas de estado cuando se envía una solicitud HTTPS a un método de API que usted defina. Puede utilizar una API de Amazon API Gateway para iniciar máquinas de estado de Step Functions que coordinan los componentes de una aplicación de backend distribuida e integrar tareas de actividad humana en los pasos de su aplicación, como solicitudes de aprobación y respuestas. También puede realizar llamadas asíncronas sin servidor a las API de servicios que use su aplicación. Para obtener más información, pruebe nuestro tutorial, Creación de una API de Step Functions mediante API Gateway

P: ¿Cómo funciona el registro y el monitoreo para AWS Step Functions?

AWS Step Functions envía métricas a Amazon CloudWatch y AWS CloudTrail para el monitoreo de aplicaciones. Amazon CloudWatch obtiene métricas, las analiza, configura alarmas y reacciona automáticamente a los cambios en AWS Step Functions. AWS CloudTrail captura todas las llamadas de la API para Step Functions como eventos, incluidas las llamadas desde la consola de Step Functions y desde las llamadas de código a las API de Step Functions. Step Functions también es compatible con las reglas administradas de Amazon CloudWatch Events para cada servicio integrado en su flujo de trabajo, y creará y administrará las reglas de CloudWatch Events en su cuenta de AWS según sea necesario. Para obtener más información, consulte Monitoreo y registro en la Guía para desarrolladores de AWS Step Functions.

P: ¿Qué sucede si mi Express Workflow falla debido a reintentos agotados o una excepción no administrada?

De manera predeterminada, Express Workflows informa todos los resultados a CloudWatch Logs, incluidas las entradas, salidas y pasos completos del flujo de trabajo. Puede seleccionar diferentes niveles de registro para registrar solo los errores, y puede elegir no registrar la entrada y la salida. Los flujos de trabajo que agotan los reintentos o tienen una excepción no administrada deben volver a ejecutarse desde el principio. 

Seguridad

P: ¿Puedo acceder a Step Functions desde los recursos en mi VPC de Amazon sin conectarme a Internet?

Step Functions también admite los puntos de enlace de la VPC (VPCE) con AWS PrivateLink. Puede acceder a Step Functions desde las funciones de AWS Lambda habilitadas por la VPC y otros servicios de AWS sin tener que pasar por la Internet pública. Para obtener más información, consulte la sección Puntos de enlace de Amazon Virtual Private Cloud para AWS Step Functions en la guía para desarrolladores de AWS Step Functions.

Conformidad

P: ¿Cuáles son las normas de conformidad que admite Step Functions?

AWS Step Functions cumple con las normas HIPAA, FedRAMP, SOC, GDPR y otras normas de conformidad más comunes. Consulte el sitio de seguridad de la nube de AWS para obtener una lista detallada de las normas de conformidad que se admiten.

Introducción a AWS Step Functions

Visite la página de introducción
¿Está listo para comenzar?
Iniciar sesión en la consola de AWS Step Functions
¿Tiene más preguntas?
Contacte con nosotros