# AWS Step Functions

> Un diagrama de flujo que corre: encadena pasos, reintenta fallas y recuerda dónde iba.

- Nivel: Avanzado
- Temas: AWS
- URL: https://tidbit.legios.com.ar/es/aws-step-functions/
- En inglés: [AWS Step Functions](https://tidbit.legios.com.ar/aws-step-functions/)

**AWS Step Functions** orquesta procesos que tienen muchos pasos. Describís una **máquina de estados**: paso A, después B; si B falla reintentalo tres veces; después C y D en paralelo; esperá 24 horas; después E. Cada paso llama a algo, casi siempre una función AWS Lambda, pero también tareas de Amazon ECS, Amazon SQS, Amazon DynamoDB y la mayoría de las APIs de AWS. Step Functions corre el flujo, sabe exactamente en qué punto está cada ejecución y lo muestra como un diagrama en vivo.

El problema que resuelve: apenas un proceso tiene varios pasos, alguien tiene que contestar '¿y si el paso 3 falla cuando el paso 2 ya cobró la tarjeta?'. Escribir esa lógica adentro de una función gigante es frágil, y un proceso que se cae se olvida de todo. Una máquina de estados guarda su estado fuera de tu código, así que una ejecución puede quedar en pausa días y retomar, y una falla en un paso dispara el reintento o la compensación que definiste.

Ejemplo: una solicitud de préstamo. Validar el formulario (Lambda), consultar el historial crediticio (una API externa con timeout de 2 minutos y reintentos), después en paralelo calcular la oferta y generar el PDF. Después esperar la firma del solicitante, hasta 7 días, en pausa y sin costo. Después abrir la cuenta. Si algún paso falla del todo, sale una notificación por Amazon SNS.

Las definiciones se escriben en un dialecto de JSON llamado Amazon States Language, o se dibujan en el Workflow Studio visual. Los workflows estándar pueden correr hasta un año; los Express son para flujos cortos y de mucho volumen que terminan en menos de cinco minutos.

## Una analogía

Un capataz de línea de producción con una planilla. No fabrica nada, pero sabe en qué estación está cada producto, lo manda de vuelta cuando una estación falla, y nunca pierde el hilo aunque cambie el turno.

## Para quedarse

- Una máquina de estados define secuencia, decisiones, ramas paralelas, esperas y reintentos.
- El estado vive en el servicio, no en tu código: una ejecución puede pausar días y sobrevivir caídas.
- Cada ejecución se ve como un diagrama con la entrada y la salida de cada paso.
- Workflows estándar para procesos largos, Express para los rápidos y de mucho volumen.

## Para seguir leyendo

- [¿Qué es AWS Step Functions? (documentación oficial)](https://docs.aws.amazon.com/es_es/step-functions/latest/dg/welcome.html)
- [Página de AWS Step Functions](https://aws.amazon.com/es/step-functions/)

## Términos relacionados

- [AWS Lambda](https://tidbit.legios.com.ar/es/aws-lambda/): Correr un pedazo de código solo cuando pasa algo, sin ningún servidor que administrar.
- [Amazon ECS y Fargate](https://tidbit.legios.com.ar/es/amazon-ecs-and-fargate/): AWS corre tus contenedores; con Fargate ni siquiera ves los servidores.
- [Amazon SQS](https://tidbit.legios.com.ar/es/amazon-sqs/): Una fila de espera para mensajes entre programas, para que ninguno se pierda.
- [Amazon DynamoDB](https://tidbit.legios.com.ar/es/amazon-dynamodb/): Una base de datos clave-valor que responde en milisegundos por más que crezca la tabla.
- [API](https://tidbit.legios.com.ar/es/api/): El menú de cosas que un programa le deja pedir a otro programa.
- [Amazon SNS](https://tidbit.legios.com.ar/es/amazon-sns/): Entra un mensaje, salen muchas copias: un megáfono para sistemas.
- [JSON](https://tidbit.legios.com.ar/es/json/): El formato de texto con el que los programas se pasan datos estructurados.
- [Amazon](https://tidbit.legios.com.ar/es/amazon/): Una tienda online con su propia red de envíos, y la empresa que maneja AWS.
