aws.crafter.run

Step Functions

AWS Step Functions

Una máquina de estados gestionada que ejecuta tu proceso paso a paso, recuerda dónde va, reintenta lo que falla y te enseña en un dibujo por dónde se rompió.

Verificado el

Los tres conceptos

Si no entiendes estos tres, nada de lo demás encaja.

  1. 1

    Standard y Express son dos servicios distintos

    Standard dura hasta un año, garantiza ejecución exactamente-una-vez y se factura por transición de estado. Express dura 5 minutos, es al-menos-una-vez y se factura por ejecución y duración. Y el tipo es inmutable: no se puede cambiar después de crear la máquina de estados.

  2. 2

    El estado viaja como JSON, y pesa

    La entrada y la salida de cada estado son JSON, con un techo duro de 256 KiB. Todo lo que pasa entre pasos cuenta, así que un proceso que arrastra el documento entero de un estado a otro choca contra ese muro y falla a mitad.

  3. 3

    Los reintentos son configuración, no código

    Retry y Catch se declaran en la definición: qué errores, cuántas veces, con qué backoff, y a dónde saltar cuando se agotan. Es la razón principal para usar Step Functions — esa lógica deja de estar repartida por cinco funciones.

Los límites

Hard es un muro: no se sube ni con un ticket. Soft se amplía pidiéndolo — antes del pico, no durante.

ConceptoValorTipo
Duración máxima — Standard1 añohard
Duración máxima — ExpressAl pasarse falla con States.Timeout.5 minutoshard
Entrada o salida de un estadoAplica a tareas, estados y ejecuciones. Es el límite que obliga a pasar referencias a S3 en vez de documentos.256 KiB en UTF-8hard
Historial de ejecución — StandardAl alcanzarlo la ejecución FALLA. En Express es ilimitado.25 000 eventoshard
Definición de la máquina de estados1 MBhard
Tamaño de petición a la API1 MBhard
Transiciones de estado — us-east-1, us-west-2, eu-west-15 000 por segundosoft
Transiciones de estado — resto de regionesSeis veces menos. En Express no hay límite de transiciones.800 por segundosoft
StartExecution — Standard300/s en las tres regiones grandes · 150/s en el restosoft
StartExecution — Express6 000 por segundosoft
Cuenta nuevaComo en Lambda, AWS la sube automáticamente según el uso.cuota de transiciones reducidasoft
Ejecuciones abiertas por cuentaSolo Standard. Al superarlo, ExecutionLimitExceeded.1 000 000soft
Retención del historialReducible a 30 días por petición. En Express hay que activar CloudWatch Logs.90 días tras cerrar la ejecuciónsoft
Periodo para redriveNo existe en Express.14 díashard
Duración de una HTTP Task60 segundoshard
Ejecuciones hijas en paralelo en un Map distribuido10 000hard
Longitud de los nombres80 caractereshard

Modelo mental

Step Functions es una máquina de estados que se acuerda de dónde va.

En una función: el progreso vive en la pilapaso 1paso 2paso 3la función muerey con ella el progreso:nadie sabe qué se hizoEn una máquina de estados: el progreso se guardaEstado persistido entre transicionespaso 1paso 2paso 3la ejecución queda paradaaquí, con su entrada,hasta un añoY esperar es gratis: un estado Wait de tres días cuesta una transición, no tres días de cómputo
Lo que compras es memoria, no orquestación. Cualquiera puede llamar a tres cosas en orden; lo que no puede es acordarse de por dónde iba cuando el proceso muere. Step Functions guarda el estado fuera de tu código y te lo dibuja.

Esa memoria es todo el producto. Una función Lambda que orquesta cinco pasos tiene que mantener el progreso en algún sitio, capturar los fallos de cada paso, decidir qué reintentar y qué deshacer, y todo eso vive en tu código y se pierde si la función muere. Step Functions guarda ese estado fuera, entre transiciones, y te lo dibuja.

Lo que compras, en concreto:

Standard y Express no son dos tamaños de lo mismo

Es la primera decisión y no se puede cambiar después: el tipo de flujo es inmutable una vez creada la máquina de estados.

Standard Express
Duración 1 año 5 minutos
Semántica exactamente una vez al menos una vez (asíncrono)
Historial 25 000 eventos, y falla al llegar ilimitado
Facturación por transición de estado por ejecución, duración y memoria
Callback .waitForTaskToken no
Espera a un job .sync no

La frase de AWS que decide la elección: Standard “sigue un modelo de exactamente-una-vez, donde tus tareas y estados nunca se ejecutan más de una vez”, lo que lo hace adecuado para orquestar acciones no idempotentes — cobrar un pago, arrancar un clúster—. Express es al-menos-una-vez y encaja con acciones idempotentes.

Traducido: si tu proceso cobra dinero, quieres Standard. Si transforma y guarda, Express es más barato.

La cuenta que hay que hacer antes

Standard se factura por transición de estado. Cada paso que se completa es una transición, y ahí está la trampa económica del servicio: un flujo con veinte estados que se ejecuta un millón de veces al mes son veinte millones de transiciones. Para procesos de alto volumen y corta duración, Express suele ser uno o dos órdenes de magnitud más barato.

Cómo te factura

Tipo Modelo Precio aproximado
Standard por transición de estado ~25 USD / millón de transiciones
Express por ejecución, duración y memoria mucho más barato a volumen

La regla mental: Standard cobra por pasos, Express por tiempo. Un flujo de tres estados que espera dos días paga tres transiciones en Standard; en Express ni siquiera cabría. Un flujo de treinta estados que dura 400 ms y se ejecuta un millón de veces al día es carísimo en Standard y trivial en Express.

Y algo que no se factura y conviene recordar: esperar es gratis en Standard. Un estado Wait de tres días cuesta una transición, no tres días de cómputo. Es la diferencia fundamental con mantener una Lambda viva, y la razón por la que los procesos con esperas largas viven aquí.

Cuándo NO usarlo

Errores comunes

Elegir el tipo sin pensarlo. Es inmutable. Cambiar de Standard a Express significa crear otra máquina de estados y migrar todo lo que la invoca.

Pasar el documento entero entre estados. El techo son 256 KiB e incluye la entrada, la salida y lo que arrastres. La solución es guardar en S3 y pasar la clave, pero hay que diseñarlo desde el principio.

Ignorar el límite de 25 000 eventos del historial. No es un aviso: la ejecución falla. Un bucle que itera cinco mil veces genera decenas de miles de eventos y revienta a mitad. La salida es dividir en ejecuciones hijas.

Suponer que tu región va a 5 000 transiciones. Fuera de Virginia, Oregón e Irlanda son 800 por segundo. Es el mismo patrón que en SNS, EventBridge y API Gateway.

Escribir los reintentos en el código. Si tu Lambda tiene un for con backoff, estás pagando duración de Lambda por esperar. Retry en la definición lo hace fuera y gratis.

Usar Express y esperar callbacks. Express no soporta .waitForTaskToken ni la espera a jobs con .sync. Cualquier paso que exija aprobación humana o esperar a un proceso externo obliga a Standard.

Olvidar que el historial caduca. 90 días en Standard, y en Express no hay historial en absoluto salvo que actives CloudWatch Logs. Si te enteras del problema tarde, puede que ya no haya nada que mirar.

Fuentes

Duraciones máximas, tamaño de entrada y salida, límite de eventos del historial, transiciones de estado y StartExecution por región, ejecuciones abiertas, retención, periodo de redrive y el aviso sobre cuentas nuevas: Step Functions service quotas. Comparación Standard/Express, inmutabilidad del tipo, semántica de ejecución y patrones de integración no soportados en Express: Choosing workflow type in Step Functions. Los importes proceden de la página de precios de AWS, que se renderiza dinámicamente y no pudo citarse literalmente: trátalos como orden de magnitud.

Dónde aparece esto