Preguntas frecuentes sobre AWS Step Functions

Información general

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 hacen 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 supervisa cada paso de manera automática; además, hace 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.

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 de las dependencias de ejecución y la programació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.

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:

  • 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
  • Creación de aplicaciones de IA generativa sin servidor: aproveche Step Functions para organizar las interacciones con los modelos fundacionales de Amazon Bedrock, el encadenamiento de peticiones, el ajuste detallado y el enriquecimiento con capacidades de más de 220 servicios de AWS
  • 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.

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 Funcionamiento de Step Functions en la Guía para desarrolladores de Step Functions.

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 hacer 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 con 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 local. El trabajador de actividad hace un sondeo de Step Functions para el trabajo, toma cualquier contenido de entrada de Step Functions, hace 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.

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

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 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 la versión ejecutable de .NET Core y otros lenguajes). Para más información sobre el modelo de programación de Lambda, consulte la Guía para desarrolladores de Lambda.

Puede crear dos tipos de flujo de trabajo:

  • Mediante la ejecución de los flujos de trabajo exprés como flujo de trabajo secundario de los flujos de trabajo estándar: el flujo de trabajo exprés 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 del elemento principal. Está sujeto a la política de reintento del elemento principal para esa tarea.
     
  • Mediante la llamada a los flujos de trabajo exprés desde un flujo de trabajo exprés, siempre que todos los flujos de trabajo no excedan el límite de duración del elemento 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.

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.

Ahora puede usar el nuevo campo Asignar para definir variables de flujo de trabajo y hacer referencia a esas variables más adelante con la sintaxis $varName. Si el estado K necesita hacer referencia a los datos generados por un estado A anterior, debe pasar los datos de forma explícita a través de todos los estados intermedios sin variables, mientras que con las variables, asigna el valor a una variable en el estado A y, a continuación, hace referencia a la variable en el estado K.

JSONata es un lenguaje de consulta/transformación de datos de código abierto para datos JSON, como JSONPath, excepto que puede realizar operaciones más potentes, como la generación de fecha y hora, y los cálculos matemáticos. Permite expresar consultas sofisticadas en una notación compacta y potente. JSONata proporciona operadores y funciones integrados para manipular y combinar datos, y los resultados de las consultas se pueden formatear en cualquier estructura de salida JSON utilizando la conocida sintaxis de objetos y matrices JSON.

Sí. Las variables se pueden agregar a cualquier flujo de trabajo existente mediante la asignación de variables. Las transformaciones de datos mejoradas con JSONata están disponibles en cualquier flujo de trabajo existente declarando “QueryLanguage”:“JSONata” como el lenguaje de consulta en estados individuales o para todo el flujo de trabajo. Los clientes actuales con cargas de trabajo de producción pueden aprovechar las ventajas de Variables y JSONata en los flujos de trabajo existentes y pueden optar por utilizar las directivas de datos mejoradas en los nuevos flujos de trabajo. Las capacidades introducidas por Variables y JSONata, aplicadas de forma colectiva, proporcionan una ruta de aprendizaje más sencilla para los nuevos clientes a medida que se incorporan a Step Functions en la versión actual de ASL. Con este enfoque, todas las características futuras de Step Functions estarán disponibles para todos los clientes sin necesidad de que actualicen sus flujos de trabajo para usar una nueva versión de ASL.

En lugar de usar JSONPath y funciones intrínsecas para realizar la selección y transformación de datos como lo hace hoy, usará JSONata. Para escribir una expresión JSONata usando “QueryLanguage”:“JSONata”, rodéela con {%%} de la siguiente manera: “{% JSONata expression%}”. Por ejemplo, puede crear una fecha para hoy como esta: “DateStamp”: “{% $now ()%}”.

JSONPath usa combinaciones variables de cinco campos principales para consultar y transformar datos dentro de cada estado (InputPath, Parameters, ResultSelector, ResultPath y OutputPath), lo que resulta difícil de entender para los desarrolladores. Ahora, con JSONata, ahora puede optar por usar “QueryLanguage”:“JSONata” para reemplazar los cinco campos por dos campos nuevos (Argumentos y Salida). El nuevo campo Argumentos proporciona capacidades adicionales para crear el valor y enviarlo a una API o un subflujo de trabajo, y el nuevo campo Salida proporciona capacidades adicionales para crear la salida de estado. Ambos campos aceptan JSONata para la manipulación de datos. “QueryLanguage”:“JSONata” proporciona un conjunto simplificado de reglas que ya no usan la convención “.$” para los nombres de campo y, en su lugar, encierran las expresiones JSONata en {%%}. Ahora puede escribir las condiciones de estado de Choice en una sola línea mediante el nuevo campo Condición. El campo Condición acepta un valor booleano o un valor de cadena que debe ser una expresión JSONPath o JSONata, según la configuración de QueryLanguage.

Comparaciones

Debe usar AWS Step Functions cuando necesite coordinar componentes de servicio en el desarrollo de aplicaciones auditables y muy escalables. Se usa 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 hace un seguimiento de todas las tareas y eventos en una aplicación y, con SQS, es necesario implementar su propio sistema de seguimiento de nivel de 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 SQS, sería necesario implementar una 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, mientras que SQS necesitaría que implementase una funcionalidad de nivel de aplicación.
     
  • Step Functions tiene funcionalidades listas para usar a fin de crear flujos de trabajo para coordinar su aplicación distribuida. SQS le permite crear flujos de trabajo básicos, pero tiene una funcionalidad limitada.

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 necesita señales externas para intervenir en sus procesos o desea lanzar procesos secundarios que devuelvan un resultado a un principal, debería considerar Amazon Simple Workflow Service (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.

Amazon EventBridge es un servicio sin servidor que utiliza eventos para conectar los componentes de la aplicación, lo que facilita a los desarrolladores la creación de aplicaciones escalables basadas en eventos. Destinos de API es una característica de EventBridge que le permite crear reglas para reenviar eventos a puntos de conexión de terceros a fin de desvincular a los productores de eventos de los consumidores.

La integración de puntos de conexión HTTPS de AWS Step Functions le permitirá invocar servicios basados en HTTPS y recibir una respuesta que se puede utilizar para controlar el flujo de su ejecución en función de su lógica empresarial. Amazon EventBridge se centra en el enrutamiento de eventos, mientras que Step Functions se centra en la orquestación de los flujos de trabajo y la administración del estado. La integración de Destinos de API de EventBridge y puntos de conexión HTTPS de Step Functions puede admitir una conexión para la autenticación, de modo que puede reutilizar las credenciales de autenticación en todos los servicios. Ambos servicios se pueden usar juntos para crear aplicaciones distribuidas sólidas y con alta escalabilidad.

Integración

Los flujos de trabajo que cree con Step Functions pueden conectar y coordinar más de 200 servicios de AWS mediante integraciones de servicios. Podrá, 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
  • Invocar modelo fundacional de Amazon Bedrock
  • 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 Descripción general, ¿cómo se conecta Step Functions a mis recursos?

Para ver los casos de uso más comunes de Step Functions, visite la página de casos de uso, donde hay casos detallados, junto con sus visualizaciones de arquitectura.

Gracias a la integración de puntos de conexión HTTPS de AWS Step Functions, puede realizar una integración directa con los servicios basados en HTTP, incluidas las aplicaciones SaaS. Mediante una interfaz visual, puede crear y organizar aplicaciones distribuidas compuestas por servicios de AWS y aplicaciones SaaS.

Puedes usar la API TestState para probar un solo paso de su flujo de trabajo, lo que permite ciclos de comentarios más rápidos para acelerar el desarrollo. TestState le permite llamar a los servicios y puntos de conexión directamente, modificar la entrada para imitar diferentes escenarios y revisar la respuesta. Puede acceder a TestState a través de Workflow Studio, lo que facilita las pruebas a medida que crea sin necesidad de implementar su flujo de trabajo. TestState acepta una única entrada y definición de estado y, a continuación, devuelve de forma sincrónica la salida de estado junto con las transformaciones de datos intermedias. Después de ejecutar el flujo de trabajo, puede analizar y depurar las ejecuciones a través de Registros de Amazon CloudWatch, AWS X-Ray y directamente en la consola de Step Functions mediante una experiencia de operador visual que le ayuda a identificar rápidamente las áreas problemáticas. 

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.

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 puerta de enlace API de API 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.

La coreografía y la orquestación son dos modelos diferentes sobre cómo se pueden comunicar los servicios distribuidos entre sí. En la orquestación, la comunicación se controla de manera más firme y Step Functions, un servicio de orquestación, coordina la interacción y el orden en el que los servicios se invocan.

La coreografía se comunica sin dicho control firme. Con Amazon EventBridge, los eventos fluyen entre servicios sin coordinación centralizada. Muchas aplicaciones usan tanto la coreografía como la orquestación para casos de uso distintos. 

Ejemplos de cómo puede usar Step Functions y EventBridge conjuntamente podrían incluir el envío de un evento o la creación de una programación con Programador de EventBridge para activar un flujo de trabajo de AWS Step Functions, seguido de la emisión de eventos en distintos pasos de su flujo de trabajo.

AWS Lambda es un servicio de computación sin servidor y basado en eventos que le permite ejecutar código para prácticamente cualquier tipo de aplicación o servicio backend sin necesidad de aprovisionar o administrar servidores. Step Functions es un servicio de orquestación sin servidor que le permite coordinar fácilmente múltiples funciones de Lambda en flujos de trabajo flexibles que son fáciles de depurar y de cambiar. Step Functions activará cada paso de su aplicación y le hará un seguimiento, por lo que sus funciones de Lambda no requerirán lógicas adicionales.

Sí, Step Functions es un servicio de orquestación sin servidor. Step Functions escala automáticamente las operaciones y la computación subyacente para ejecutar los pasos de su aplicación como respuesta a los cambios en las cargas de trabajo. Step Functions tienen tolerancia a errores integrada y mantiene la capacidad del servicio en varias zonas de disponibilidad en cada región para proteger a las aplicaciones frente a fallos en equipos individuales o en el centro de datos. Eso ayuda a garantizar una alta disponibilidad del servicio y del flujo de trabajo de la aplicación que opera.

Step Functions ofrece el modelo de pago de pago por uso para aumentar la agilidad y optimizar los costos. Obtenga más información sobre los precios de Step Functions.

AWS Step Functions envía métricas a Amazon CloudWatch y AWS CloudTrail para la supervisión 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 Supervisión y registros en la Guía para desarrolladores de Step Functions.

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.

Step Functions tiene una integración optimizada con Amazon Bedrock. Puede invocar los modelos básicos de Bedrock directamente desde el flujo de trabajo de Step Functions mediante lenguaje natural. Esto le permite hacer lo siguiente:   

  • Enriquecer sus datos procesados por Step Functions con capacidades de IA generativa para reducir la complejidad de administración de sus datos, gracias el resumen de texto, la generación de imágenes o la personalización.
  • Recuperar información de bases de datos, como los últimos datos de precios de sus productos y personalización de usuarios, y utilizar las funciones intrínsecas de Step Functions para insertarla en la solicitud, asegurándose de que el LLM utilice los datos más actuales para mejorar la precisión de la respuesta.
  • Generar incrustaciones al hacer que Step Functions revise los documentos, extraiga datos, fragmente los documentos y, a continuación, transforme los datos de texto digital para incrustarlos como un proceso de varios pasos. Esto se puede programar como un proceso recurrente.
  • Utilice los flujos de trabajo de Step Function para un encadenamiento de peticiones. Puede organizar múltiples llamadas de LLM y elegir el mejor modelo para cada etapa de la cadena, a fin de formar una cadena personalizada de etapas de procesamiento y seleccionar respuestas más precisas y conscientes del contexto a partir del modelo fundacional.
  • Cree interacciones humanas (HITL, Human-in-the-loop) con su flujo de trabajo de IA generativa para moderar las respuestas y evitar alucinaciones o incorpore una lógica para administrar las respuestas que no estén respaldadas por el modelo fundacional.

Seguridad

Step Functions también admite los puntos de enlace de VPC (VPCE) con AWS PrivateLink. Puede acceder a Step Functions desde las funciones de AWS Lambda habilitadas para 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 VPC para Step Functions en la Guía para desarrolladores de Step Functions.

Conformidad

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.