Jonatan Matajonmatum.com
conceptosnotasexperimentosensayos
© 2026 Jonatan Mata. All rights reserved.v2.1.1
Conceptos

AWS Step Functions

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.

evergreen#aws#step-functions#orchestration#serverless#workflow#state-machine#asl

¿Qué es?

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.

Tipos de workflow

Step Functions ofrece dos tipos de workflow con características y precios diferentes:

CaracterísticaStandardExpress
Duración máxima1 año5 minutos
Modelo de preciosPor transición de estadoPor ejecución y duración
Historial de ejecuciónCompleto y persistenteLimitado, opcional
Garantías de ejecuciónExactamente una vezAl menos una vez
Casos de usoWorkflows largos, durablesAlto volumen, baja latencia
Costo típicoMayor para alto volumenMenor para ejecuciones frecuentes
Límite de ejecuciones2,000 concurrentes100,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.

Estados fundamentales

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).

Manejo de errores y reintentos

Step Functions incluye patrones robustos para manejar fallos:

Retry configura reintentos automáticos con backoff exponencial:

  • ErrorEquals: tipos de error a reintentar
  • IntervalSeconds: tiempo inicial entre reintentos
  • MaxAttempts: número máximo de reintentos
  • BackoffRate: multiplicador para backoff exponencial

Catch maneja errores que no se resuelven con reintentos:

  • Redirige a estados de compensación o limpieza
  • Preserva información del error para debugging
  • Permite implementar el saga pattern para transacciones distribuidas

Integración con servicios AWS

Step Functions se integra nativamente con más de 200 servicios AWS sin código Lambda intermedio:

  • Compute: Lambda, ECS, Fargate, Batch
  • Storage: S3, DynamoDB, RDS
  • Messaging: SNS, SQS, EventBridge
  • AI/ML: Bedrock, SageMaker, Comprehend
  • Analytics: Athena, Glue, EMR

Esta integración directa reduce latencia, costo y complejidad comparado con orquestar servicios mediante funciones Lambda wrapper.

Patrones de diseño

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.

¿Por qué importa?

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.

Referencias

  • AWS Step Functions Developer Guide — AWS, 2024. Documentación oficial completa.
  • Amazon States Language Specification — AWS, 2024. Especificación completa de ASL.
  • Step Functions Best Practices — AWS, 2024. Patrones y mejores prácticas.
  • Serverless Patterns - Step Functions — AWS Serverless Land, 2024. Colección de patrones con código.
  • AWS Step Functions Workflow Studio — AWS Blog, 2021. Herramienta visual para construir máquinas de estado.
  • Step Functions Pricing — AWS, 2024. Modelo de precios detallado por tipo de workflow.

Contenido relacionado

  • Serverless

    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.

  • Flujos de Trabajo Agénticos

    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.

  • Arquitectura Orientada a Eventos

    Patrón arquitectónico donde los componentes se comunican mediante eventos asíncronos, permitiendo sistemas desacoplados, escalables y reactivos.

  • AWS Lambda

    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.

  • Microservicios

    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.

  • De prototipo a producción: un segundo cerebro serverless en AWS

    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.

  • Segundo Cerebro Serverless

    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».

Conceptos