← Volver al catálogo

AWS Step Functions

En una frase: Orquesta pasos de un flujo como máquina de estados con reintentos y ramas visuales
Certificaciones: SAA-C03 SAP-C02 CLF-C02 DVA-C02

Qué es

AWS Step Functions coordina los pasos de un proceso como una máquina de estados: defines qué se hace en cada paso, qué pasa si falla, cuándo esperar y por dónde seguir, y el servicio lo ejecuta, guarda el estado entre pasos y te muestra cada ejecución en un diagrama. Así la lógica de coordinación (reintentos, ramas, tiempos de espera) sale del código de tus funciones y queda declarada en un solo sitio. Los flujos se escriben en ASL (Amazon States Language, un JSON (JavaScript Object Notation: formato de datos en texto)) o se diseñan arrastrando pasos en Workflow Studio.

Conceptos clave

  • Estados: Task (hace un trabajo), Choice (rama según una condición), Parallel (ramas a la vez), Map (repite un paso para cada elemento de una lista; el Map distribuido procesa millones de objetos de S3 (Simple Storage Service) en paralelo), Wait, Pass, Succeed y Fail.
  • Tipos de flujo (se elige al crearlo y no se puede cambiar):
    • Standard: hasta 1 año, cada paso se ejecuta exactamente una vez, historial consultable en el servicio durante 90 días; se paga por transición de estado.
    • Express: hasta 5 minutos, ejecución al menos una vez, ritmo de más de 100 000 ejecuciones por segundo, historial en CloudWatch Logs; se paga por número y duración de ejecuciones.
  • Integraciones con servicios: llamadas directas a más de 200 servicios (DynamoDB, SQS (Simple Queue Service), SNS (Simple Notification Service), ECS (Elastic Container Service), Glue, Bedrock…) sin una Lambda de por medio.
  • Patrones de integración (solo en Standard los dos últimos): petición-respuesta (llama y sigue), ejecutar un trabajo (.sync, espera a que termine, por ejemplo un trabajo de Batch) y esperar una devolución de llamada (.waitForTaskToken, se pausa hasta que alguien devuelve un token; ideal para aprobaciones humanas).
  • Gestión de errores: Retry con espera exponencial y Catch para desviar a un paso de compensación. Es la base del patrón saga para deshacer pasos de una transacción distribuida.
  • Datos entre pasos: con JSONPath o con expresiones JSONata, y variables para reutilizar valores en pasos posteriores.

Casos de uso típicos

  • Procesos de negocio con varios pasos: pedido, pago, envío y notificación.
  • Flujos con intervención humana (aprobaciones) mediante tokens de devolución.
  • Canalizaciones de datos y ML (Glue, SageMaker AI, Batch) con esperas a que terminen.
  • Procesar en paralelo miles de ficheros de S3 con el Map distribuido.
  • Orquestar llamadas a modelos de Bedrock y pasos de validación en aplicaciones de IA (inteligencia artificial).

Cuándo NO usarlo

  • Una sola acción rápida disparada por un evento: una función Lambda basta.
  • Enrutar eventos entre servicios sin estado: EventBridge.
  • Desacoplar productor y consumidor con una cola: SQS.
  • Canalizaciones de datos complejas con dependencias al estilo Apache Airflow y un equipo que ya lo usa: Amazon MWAA (Managed Workflows for Apache Airflow).

Standard frente a Express

CaracterísticaStandardExpress
Duración máxima1 año5 minutos
SemánticaExactamente una vezAl menos una vez
Ritmo de inicioMiles por segundoMás de 100 000 por segundo
PrecioPor transición de estadoPor ejecución y duración
.sync y waitForTaskTokenSíNo
Uso típicoProcesos largos y auditablesEventos de alto volumen, IoT (internet de las cosas), streaming

Modelo de precios

En los flujos Standard se paga por cada transición de estado, con un nivel gratuito mensual. En los Express, por número de ejecuciones y por su duración según la memoria usada. Se suman los servicios invocados en cada paso y, en Express, los registros en CloudWatch.

Seguridad y alta disponibilidad

Trampas de examen

  • "Coordinar varias Lambdas con reintentos, ramas y esperas": Step Functions, no encadenar funciones que se llaman entre sí.
  • "Proceso que dura días" o "aprobación humana": flujo Standard con .waitForTaskToken.
  • "Alto volumen de eventos cortos y barato": flujo Express.
  • "Exactamente una vez": Standard.
  • "Procesar en paralelo millones de objetos de S3": Map distribuido.
  • "Deshacer pasos si falla uno posterior": Catch hacia pasos de compensación (patrón saga).
  • "Llamar a DynamoDB sin escribir una Lambda": integración directa con el servicio.

Preguntas de práctica

Preguntas originales escritas para estos apuntes. No son preguntas reales de examen.

Fuentes