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 lo ayuda a escalar con mayor facilidad y modificar las aplicaciones con mayor 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 más 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 mayor rapidez. Puede cambiar y agregar pasos sin escribir código, lo que le permite evolucionar la aplicación con mayor facilidad e innovar con mayor velocidad.

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

Subdividir una aplicación en componentes (o pasos) de servicio garantiza que el error de un componente no detenga todo el sistema. Cada componente se escala por separado, y dicho componente se puede actualizar sin necesidad de que todo el sistema vuelva a implementarse después de cada cambio. La coordinación de componentes de servicio implica la administración y la programación de las dependencias de ejecución y la concurrencia de acuerdo con el flujo lógico de la aplicación. En una aplicación de este tipo, puede utilizar la orquestación del servicio para hacerlo y gestionar los errores.

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

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, itere y procese millones de archivos en un bucket de Amazon Simple Storage Service (S3) con flujos de trabajo de simultaneidad alta o coordine el análisis de varios pasos y los flujos de trabajo de machine learning.
  • 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 detalles, explore los casos de uso y los testimonios de los clientes de AWS Step Functions.

P: ¿Cómo funciona AWS Step Functions?

Al usar 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 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 más 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 How Step Functions Works (Funcionamiento de Step Functions) en la Guía para desarrolladores de Step Functions.

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

Puede orquestar cualquier servicio de AWS a través de las integraciones de servicios o cualquier componente de aplicación autoadministrado utilizando las tareas de actividad.

Las integraciones de servicios lo ayudan a realizar llamadas a los servicios de AWS e incluir la respuesta en el flujo de trabajo. Las integraciones de servicios de AWS-SDK lo ayudan a invocar una de las más de 9000 acciones de la API de AWS de más de 200 servicios directamente desde su flujo de trabajo. Las integraciones de servicios optimizados simplifican aún más el uso de servicios comunes como AWS Lambda, Amazon Elastic Container Service (ECS), AWS Glue o Amazon EMR con capacidades que incluyen la generación de políticas de IAM y el patrón RunAJob que esperará automáticamente a que se completen los trabajos asíncronos.
Las tareas de actividad incorporan la integración a trabajos de actividad que se ejecutan en una ubicación de su elección, incluido en Amazon Elastic Compute Cloud (EC2), en Amazon ECS, en un dispositivo móvil o en un servidor en las instalaciones. El trabajador de actividad realiza un sondeo de Step Functions para el trabajo, toma cualquier contenido de entrada de Step Functions, realiza el trabajo utilizando su código y devuelve los resultados. Dado que los trabajadores de actividad solicitan trabajo, es más fácil utilizar los trabajadores que se implementan detrás de un firewall.

Una máquina de estado de Step Functions puede contener combinaciones de integraciones de servicios y de tareas de actividad. Las aplicaciones de 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 Step Functions?

Existen varias maneras para comenzar a utilizar Step Functions, entre ellas:

P: ¿Qué lenguaje utiliza Step Functions?

Las máquinas de estado de 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 Step Functions utilizando las API de servicios web. Por comodidad, puede usar un AWS SDK en el lenguaje que elija. 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 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.

P: ¿De qué forma admite Step Functions el paralelismo?

Step Functions incluye un estado de mapa para el paralelismo dinámico. El estado de mapa tiene dos modos de funcionamiento (en línea y distribuido) y ambos modos ejecutan el mismo conjunto de pasos para una serie de elementos. Un mapa en el modo en línea puede admitir una simultaneidad de 40 ramas paralelas y límites de historial de ejecuciones de 25 000 eventos o aproximadamente 6500 transiciones de estado en un flujo de trabajo. Con el modo distribuido, puede ejecutar hasta 10 000 ramas paralelas en simultaneidad. El mapa distribuido se ha optimizado para Amazon S3, lo que lo ayuda a iterar más fácilmente en los objetos de un bucket de S3. Consulte las preguntas frecuentes en la sección sobre la integración. Las iteraciones de un modo distribuido se dividen en ejecuciones paralelas para ayudarlo a superar los límites de carga útil y del historial de ejecuciones. También puede elegir si cada iteración la realiza un flujo de trabajo estándar, que es idempotente, o un flujo de trabajo exprés, que es más rápido y más económico, pero no es idempotente. Obtenga más información sobre el estado del mapa.

Comparaciones

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

Debe plantearse el uso de Step Functions cuando necesite coordinar componentes de servicio en el desarrollo de aplicaciones auditables y muy escalables. Debe plantearse el uso de Amazon SQS cuando necesite una cola alojada de confianza y muy escalable para el envío, almacenamiento y recepción de mensajes entre servicios. Step Functions lleva un seguimiento de todas las tareas y los eventos de una aplicación. En 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 lo ayuda a buscar ejecuciones, ver los detalles de una ejecución y administrar ejecuciones. Con 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 SQS, tenemos que implementar alguna funcionalidad de nivel de aplicación. Mientras que puede utilizar 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 de nivel de aplicación.

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

Debería plantearse el uso de 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 un principal, debería plantearse el uso de Amazon SWF. Con SWF, en vez de escribir máquinas de estados en JSON declarativo, puede escribir 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 orquestació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.

Integración

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

Los flujos de trabajo que se crean con Step Functions pueden conectar y coordinar más de 200 servicios de AWS mediante el uso de integraciones de servicios. Puede, por ejemplo:

  • Invocar una función de AWS Lambda.
  • Ejecutar una tarea de ECS o AWS Fargate.
  • Obtener un elemento existente de una tabla de Amazon DynamoDB o colocar un nuevo elemento en una tabla de DynamoDB.
  • Enviar un trabajo de AWS Batch y esperar que se complete.
  • Publicar un mensaje en un tema de 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 un modelo de machine learning o transformar por lotes 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 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 Step Functions a mis recursos?

P: ¿Cómo puede ayudarme Step Functions a procesar un conjunto de datos grande en Amazon S3?

Puede crear flujos de trabajo mediante un estado de mapa en modo distribuido para procesar datos a gran escala, como registros, archivos multimedia, transacciones de ventas o datos de sensores de IoT. Step Functions iterará a través de los elementos e iniciará ejecuciones de flujos de trabajo paralelos al instante, lo que le permite crear un procesamiento de datos bajo demanda a escala. Se ha optimizado el estado del mapa distribuido para que funcione con S3. Puede especificar un bucket de S3 con criterios de filtros, un archivo de manifiesto de S3, una colección de JSON o archivos CSV almacenados en S3 como entradas del flujo de trabajo. También puede especificar un bucket de S3 para las salidas de la ejecución de un mapa distribuido.

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

Puede asociar las API de Step Functions con 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 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 Creating a Step Functions API Using API Gateway (Creación de una API de Step Functions mediante API Gateway).

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

Step Functions envía métricas a Amazon CloudWatch y AWS CloudTrail para el monitoreo de aplicaciones. CloudWatch obtiene métricas, las analiza, configura alarmas y reacciona automáticamente a los cambios en AWS Step Functions. 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 Eventos de CloudWatch para cada servicio integrado en su flujo de trabajo, y creará y administrará las reglas de Eventos de CloudWatch en su cuenta de AWS según sea necesario. Para obtener más información, consulte Monitoring and Logging (Monitoreo y registros) en la Guía para desarrolladores de 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 conexión de VPC (VPCE) con AWS PrivateLink. Puede acceder a Step Functions desde las funciones de 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 Amazon VPC Endpoints for Step Functions (Puntos de conexión de VPC para Step Functions) en la Guía para desarrolladores de Step Functions.

Conformidad

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

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?
Contáctenos