Servicio de orquestación serverless de AWS que coordina múltiples servicios en workflows visuales usando Amazon States Language (ASL), con manejo de errores, reintentos y ejecución paralela integrados.
AWS Step Functions es un servicio de orquestación serverless que coordina múltiples servicios AWS en workflows visuales usando Amazon States Language (ASL). Define flujos como máquinas de estado declarativas con pasos, condiciones, paralelismo y manejo de errores integrado.
A diferencia de orquestar servicios con código custom en AWS Lambda, Step Functions separa la lógica de negocio de la coordinación del workflow. Cada estado en la máquina puede invocar servicios AWS, APIs externas, o funciones Lambda, mientras el servicio maneja automáticamente reintentos, timeouts y transiciones entre estados.
El servicio utiliza JSON para definir máquinas de estado que son tanto ejecutables como documentación visual del proceso. Esto facilita el debugging, auditoría y mantenimiento de workflows complejos en arquitecturas de microservicios y sistemas event-driven.
Step Functions ofrece dos tipos de workflow con características y precios diferentes:
| Característica | Standard | Express |
|---|---|---|
| Duración máxima | 1 año | 5 minutos |
| Modelo de precios | Por transición de estado | Por ejecución y duración |
| Historial de ejecución | Completo y persistente | Limitado, opcional |
| Garantías de ejecución | Exactamente una vez | Al menos una vez |
| Casos de uso | Workflows largos, durables | Alto volumen, baja latencia |
| Costo típico | Mayor para alto volumen | Menor para ejecuciones frecuentes |
| Límite de ejecuciones | 2,000 concurrentes | 100,000 concurrentes |
Standard workflows son ideales para procesos de negocio que requieren auditoría completa, como aprobaciones, ETL pipelines, o workflows agenticos complejos. Express workflows optimizan para casos de streaming, validación de datos en tiempo real, o microservicios que requieren orquestación rápida.
Amazon States Language define siete tipos de estados para construir workflows:
{
"Comment": "Ejemplo de procesamiento de pedido",
"StartAt": "ValidateOrder",
"States": {
"ValidateOrder": {
"Type": "Task",
"Resource": "arn:aws:lambda:us-east-1:123456789012:function:ValidateOrder",
"Next": "CheckInventory",
"Retry": [
{
"ErrorEquals": ["Lambda.ServiceException"],
"IntervalSeconds": 2,
"MaxAttempts": 3,
"BackoffRate": 2.0
}
],
"Catch": [
{
"ErrorEquals": ["States.TaskFailed"],
"Next": "OrderFailed"
}
]
},
"CheckInventory": {
"Type": "Choice",
"Choices": [
{
"Variable": "$.inventory.available",
"BooleanEquals": true,
"Next": "ProcessPayment"
}
],
"Default": "OutOfStock"
},
"ProcessPayment": {
"Type": "Parallel",
"Branches": [
{
"StartAt": "ChargeCard",
"States": {
"ChargeCard": {
"Type": "Task",
"Resource": "arn:aws:lambda:us-east-1:123456789012:function:ChargeCard",
"End": true
}
}
},
{
"StartAt": "SendConfirmation",
"States": {
"SendConfirmation": {
"Type": "Task",
"Resource": "arn:aws:states:::sns:publish",
"Parameters": {
"TopicArn": "arn:aws:sns:us-east-1:123456789012:order-confirmations",
"Message.$": "$.confirmationMessage"
},
"End": true
}
}
}
],
"Next": "ProcessItems"
},
"ProcessItems": {
"Type": "Map",
"ItemsPath": "$.order.items",
"MaxConcurrency": 5,
"Iterator": {
"StartAt": "ProcessItem",
"States": {
"ProcessItem": {
"Type": "Task",
"Resource": "arn:aws:lambda:us-east-1:123456789012:function:ProcessItem",
"End": true
}
}
},
"Next": "OrderComplete"
},
"OutOfStock": {
"Type": "Task",
"Resource": "arn:aws:states:::sns:publish",
"Parameters": {
"TopicArn": "arn:aws:sns:us-east-1:123456789012:inventory-alerts",
"Message": "Item out of stock"
},
"Next": "OrderFailed"
},
"OrderComplete": {
"Type": "Succeed"
},
"OrderFailed": {
"Type": "Fail",
"Cause": "Order processing failed"
}
}
}Este ejemplo demuestra Task (ejecutar Lambda), Choice (branching condicional), Parallel (ejecución concurrente), Map (iteración sobre arrays), Succeed/Fail (terminación explícita).
Step Functions incluye patrones robustos para manejar fallos:
Retry configura reintentos automáticos con backoff exponencial:
ErrorEquals: tipos de error a reintentarIntervalSeconds: tiempo inicial entre reintentosMaxAttempts: número máximo de reintentosBackoffRate: multiplicador para backoff exponencialCatch maneja errores que no se resuelven con reintentos:
Step Functions se integra nativamente con más de 200 servicios AWS sin código Lambda intermedio:
Esta integración directa reduce latencia, costo y complejidad comparado con orquestar servicios mediante funciones Lambda wrapper.
Saga Pattern: Para transacciones distribuidas, cada paso incluye una acción de compensación. Si un paso falla, Step Functions ejecuta las compensaciones en orden inverso.
Human-in-the-loop: Workflows pueden pausar esperando aprobación humana usando tokens de callback. Útil para aprobaciones de gastos, revisiones de contenido, o decisiones que requieren juicio humano.
Fan-out/Fan-in: El estado Map procesa arrays en paralelo con control de concurrencia. Ideal para procesar lotes de datos, validar múltiples inputs, o ejecutar tareas independientes.
Circuit Breaker: Combinando Choice y Wait, se pueden implementar circuit breakers que pausan workflows cuando servicios downstream fallan repetidamente.
Step Functions transforma workflows complejos de código imperativo a definiciones declarativas auditables. En lugar de manejar coordinación, reintentos y estados de error en código custom, defines el flujo una vez y el servicio maneja la ejecución confiable.
Para equipos que construyen sistemas distribuidos, esto significa menos código de orquestación que mantener, mejor visibilidad del estado del sistema, y capacidad de modificar workflows sin deployments de código. La separación entre lógica de negocio y coordinación facilita testing, debugging y evolución de procesos complejos.
En arquitecturas serverless y de microservicios, Step Functions actúa como el «pegamento» que coordina servicios independientes en procesos de negocio cohesivos, con la confiabilidad y observabilidad que requieren sistemas de producción.
Modelo de computación en la nube donde el proveedor gestiona la infraestructura automáticamente, permitiendo ejecutar código sin aprovisionar ni administrar servidores, pagando solo por el uso real.
Patrones de diseño donde agentes de IA ejecutan tareas complejas de múltiples pasos de forma autónoma, combinando razonamiento, uso de herramientas y toma de decisiones iterativa.
Patrón arquitectónico donde los componentes se comunican mediante eventos asíncronos, permitiendo sistemas desacoplados, escalables y reactivos.
Servicio de cómputo serverless de AWS que ejecuta código en respuesta a eventos sin necesidad de aprovisionar ni administrar servidores, escalando automáticamente desde cero hasta miles de ejecuciones concurrentes.
Estilo arquitectónico que estructura una aplicación como colección de servicios pequeños, independientes y desplegables, cada uno con su propia lógica de negocio y datos.
Diseño de arquitectura para escalar un segundo cerebro personal a un sistema de producción con AWS serverless — desde el prototipo actual hasta casos de uso especializados en legal, investigación y comunidad.
Backend serverless de producción para un grafo de conocimiento personal — DynamoDB, Lambda, Bedrock, MCP, Step Functions. La implementación de la arquitectura descrita en el ensayo «Del prototipo a producción».