0Pricing
AWS Solutions Architect · Lección

Step Functions: orquestación de flujos de trabajo sin servidor

Defina flujos de trabajo de varios pasos como máquinas de estados en Step Functions, gestione errores con bloques catch y retry e integre integraciones nativas del SDK

Step Functions: orquestación de flujos de trabajo sin servidor es una lección gratuita de AWS Solutions Architect en CoddyKit. Esta es la lección 2 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de AWS Solutions Architect, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de AWS Solutions Architect incluye 4 lecciones en total.

¿Qué es AWS Step Functions?

AWS Step Functions es un servicio de orquestación de flujos de trabajo totalmente administrado que coordina aplicaciones distribuidas como una serie de pasos definidos en una máquina de estado. Cada paso de la máquina de estado es un estado: una invocación de Lambda, una llamada al SDK de AWS, un periodo de espera, una rama paralela o una elección (if/else). Step Functions administra el estado, gestiona los reintentos y proporciona un historial visual de las ejecuciones, lo que elimina la necesidad de escribir la lógica de orquestación en el código de la aplicación.

Amazon States Language (ASL)

Las máquinas de estado se definen en Amazon States Language (ASL), un lenguaje basado en JSON. Cada estado tiene un Type (Task, Choice, Wait, Parallel, Map, Pass, Succeed o Fail) y realiza la transición a un estado Next o finaliza. El campo Resource de un estado Task especifica el servicio de AWS que se invocará: un ARN para Lambda o un ARN de integración de servicios optimizado para más de 200 servicios de AWS, sin una Lambda intermedia.

{
  'Comment': 'Order processing workflow',
  'StartAt': 'ValidateOrder',
  'States': {
    'ValidateOrder': {
      'Type': 'Task',
      'Resource': 'arn:aws:lambda:us-east-1:123456789012:function:ValidateOrder',
      'Next': 'ChargePayment',
      'Retry': [{'ErrorEquals': ['Lambda.ServiceException'], 'IntervalSeconds': 2, 'MaxAttempts': 3}]
    },
    'ChargePayment': {
      'Type': 'Task',
      'Resource': 'arn:aws:states:::dynamodb:putItem',
      'Parameters': {'TableName': 'Orders', 'Item': {'orderId': {'S.$': '$.orderId'}}},
      'End': true
    }
  }
}

Flujos de trabajo Standard frente a Express

Step Functions tiene dos tipos de flujos de trabajo. Flujos de trabajo Standard: duraderos, con una duración de hasta 1 año, semántica de ejecución exactamente una vez e historial completo de ejecución almacenado durante 90 días; son adecuados para procesos empresariales de larga duración. Flujos de trabajo Express: gran rendimiento (más de 100.000 ejecuciones por segundo), duración de hasta 5 minutos, semántica de al menos una vez y registros enviados a CloudWatch; son adecuados para el procesamiento de eventos en tiempo real y las canalizaciones de datos de IoT. Elija según los requisitos de duración, rendimiento e idempotencia.

# Create a Standard workflow state machine
aws stepfunctions create-state-machine \
  --name OrderProcessing \
  --definition file://order-state-machine.json \
  --role-arn arn:aws:iam::123456789012:role/StepFunctionsRole \
  --type STANDARD

# Create an Express workflow for high-throughput
aws stepfunctions create-state-machine \
  --name ClickstreamProcess \
  --definition file://click-state-machine.json \
  --role-arn arn:aws:iam::123456789012:role/StepFunctionsRole \
  --type EXPRESS

Estados Task e integraciones de servicios

Los estados Task de Step Functions admiten dos patrones de integración. Request-Response: llama a un servicio de AWS y continúa inmediatamente (sin esperar respuesta). Integración síncrona: llama a un servicio y espera a que finalice antes de pasar al siguiente estado (por ejemplo, esperar a que termine una tarea de ECS, un trabajo de Glue o un trabajo de entrenamiento de SageMaker). La integración síncrona utiliza el sufijo :sync:2 en el ARN del recurso y elimina la necesidad de implementar lógica de sondeo.

# Sync integration: start Glue job and wait for completion
'RunGlueETL': {
  'Type': 'Task',
  'Resource': 'arn:aws:states:::glue:startJobRun.sync:2',
  'Parameters': {
    'JobName': 'clean-sales'
  },
  'Next': 'RunAthenaQuery'
}

Estados Choice para la lógica de bifurcación

Un estado Choice implementa una bifurcación condicional, equivalente en un flujo de trabajo a una instrucción if/else o switch. Defina Choices como una matriz de condiciones; la primera condición coincidente determina el siguiente estado. Un estado Default gestiona los casos que no coinciden. Los estados Choice permiten dirigir un pedido por distintas rutas de preparación y entrega según el tipo de producto, el nivel del cliente o el estado del pago, sin escribir lógica condicional en Lambda.

'RouteByOrderType': {
  'Type': 'Choice',
  'Choices': [
    {
      'Variable': '$.orderType',
      'StringEquals': 'DIGITAL',
      'Next': 'FulfillDigital'
    },
    {
      'Variable': '$.orderType',
      'StringEquals': 'PHYSICAL',
      'Next': 'FulfillPhysical'
    }
  ],
  'Default': 'HandleUnknownType'
}

Estados Parallel y Map

Un estado Parallel ejecuta varias ramas simultáneamente y espera a que todas finalicen antes de continuar; resulta útil para tareas simultáneas, como realizar al mismo tiempo una comprobación de crédito y una comprobación de inventario. Un estado Map itera sobre una matriz de entrada y aplica el mismo conjunto de estados a cada elemento en paralelo; resulta útil para procesar un lote de elementos devueltos por un paso anterior, como cambiar el tamaño de varias imágenes cargadas.

'ProcessImages': {
  'Type': 'Map',
  'ItemsPath': '$.imageKeys',
  'MaxConcurrency': 10,
  'Iterator': {
    'StartAt': 'ResizeImage',
    'States': {
      'ResizeImage': {
        'Type': 'Task',
        'Resource': 'arn:aws:lambda:us-east-1:123:function:ResizeImage',
        'End': true
      }
    }
  },
  'Next': 'NotifyComplete'
}

Gestión de errores: Catch y Retry

Cada estado Task de Step Functions puede incluir bloques Retry y Catch para gestionar errores de forma resistente. Retry especifica qué tipos de error activan reintentos automáticos mediante IntervalSeconds, MaxAttempts y BackoffRate configurables (multiplicador del retroceso exponencial). Catch especifica los estados alternativos para errores irrecuperables. Esta gestión declarativa de errores evita repetir bloques try/catch dentro de las funciones de Lambda.

'ChargeCard': {
  'Type': 'Task',
  'Resource': 'arn:aws:lambda:us-east-1:123:function:ChargeCard',
  'Retry': [{
    'ErrorEquals': ['Lambda.ServiceException', 'States.TaskFailed'],
    'IntervalSeconds': 2,
    'MaxAttempts': 3,
    'BackoffRate': 2.0
  }],
  'Catch': [{
    'ErrorEquals': ['PaymentDeclined'],
    'Next': 'NotifyPaymentFailed',
    'ResultPath': '$.error'
  }],
  'Next': 'FulfillOrder'
}

Estados Wait y callbacks

Un estado Wait pausa la ejecución del flujo de trabajo durante un periodo fijo o hasta una marca de tiempo específica. Un patrón de Callback (mediante .waitForTaskToken) pausa la ejecución hasta que un sistema externo llama a SendTaskSuccess o SendTaskFailure con el token. Así es como Step Functions modela los pasos de aprobación humana: envía un correo electrónico con el token de tarea y el flujo de trabajo se reanuda cuando una persona hace clic en un enlace de aprobación o rechazo en su cliente de correo.

# Callback pattern: wait for human approval
'RequestApproval': {
  'Type': 'Task',
  'Resource': 'arn:aws:states:::sqs:sendMessage.waitForTaskToken',
  'Parameters': {
    'QueueUrl': 'https://sqs.us-east-1.amazonaws.com/123/approvals',
    'MessageBody': {
      'taskToken.$': '$$.Task.Token',
      'orderId.$': '$.orderId'
    }
  },
  'Next': 'ProcessApproval'
}

Integración de Step Functions con EventBridge

Las ejecuciones de Step Functions pueden iniciarse mediante reglas de EventBridge, lo que facilita la activación de flujos de trabajo en respuesta a eventos de servicios de AWS. Por ejemplo, un evento de S3 ObjectCreated activa una regla de EventBridge que inicia un flujo de trabajo de Step Functions para procesar imágenes. Step Functions también puede publicar sus propios eventos en EventBridge cuando las ejecuciones se completan correctamente o fallan, lo que permite supervisar y generar alertas posteriormente sin sondear la API de Step Functions.

Supervisión de las ejecuciones de Step Functions

La consola de Step Functions proporciona un diagrama visual de la ejecución del flujo de trabajo que muestra qué estado se completó correctamente, cuál está en ejecución y cuál falló, con codificación por colores en tiempo real. Cada ejecución almacena su historial completo de entrada y salida en los flujos de trabajo Standard (con una retención de 90 días). En los flujos de trabajo Express, los registros se envían a CloudWatch Logs. Use el seguimiento de X-Ray para rastrear la latencia de las solicitudes de extremo a extremo a través de las funciones de Lambda y otros servicios llamados durante el flujo de trabajo.

# List recent executions and check status
aws stepfunctions list-executions \
  --state-machine-arn arn:aws:states:us-east-1:123456789012:stateMachine:OrderProcessing \
  --status-filter FAILED

# Describe a specific failed execution for debugging
aws stepfunctions describe-execution \
  --execution-arn arn:aws:states:us-east-1:123456789012:execution:OrderProcessing:exec-001

Step Functions frente a SQS y EventBridge

Saber cuándo usar Step Functions en lugar de SQS o EventBridge es una decisión habitual en el examen. Use Step Functions cuando necesite una orquestación visible y con estado de un proceso de varios pasos, con gestión de errores y bifurcaciones. Use SQS para la mensajería asíncrona punto a punto y fiable entre dos servicios, con reintentos mediante el tiempo de espera de visibilidad. Use EventBridge para dirigir eventos a varios suscriptores según patrones de contenido. Un flujo de trabajo de Step Functions puede integrar los tres: esperar un mensaje de SQS mediante un token de tarea, publicar la finalización en EventBridge y encadenar llamadas a Lambda y al SDK.

Comprobación rápida

Compruebe su comprensión de los conceptos de AWS Solutions Architect (SAA-C03) de esta lección.

Resumen de la lección

En esta lección ha aprendido que: Step Functions coordina flujos de trabajo como máquinas de estados con estados Task, Choice, Parallel, Map, Wait y Catch; los flujos de trabajo Standard admiten hasta 1 año y conservan el historial completo de ejecución, mientras que los flujos de trabajo Express gestionan cargas de trabajo de alto rendimiento de menos de 5 minutos; y el patrón Callback, junto con los tokens de tarea, permite implementar pasos de aprobación con intervención humana. A continuación, exploraremos Kinesis Data Streams para el procesamiento de eventos en tiempo real de alto rendimiento.

Preguntas frecuentes

¿La lección «Step Functions: orquestación de flujos de trabajo sin servidor» es gratis?

Sí — el texto completo de «Step Functions: orquestación de flujos de trabajo sin servidor» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de AWS Solutions Architect, actualiza a CoddyKit PRO. El curso de AWS Solutions Architect incluye 4 lecciones en total.

¿Qué aprenderé en «Step Functions: orquestación de flujos de trabajo sin servidor»?

Defina flujos de trabajo de varios pasos como máquinas de estados en Step Functions, gestione errores con bloques catch y retry e integre integraciones nativas del SDK Practicas AWS Solutions Architect con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar AWS Solutions Architect?

No se requiere experiencia previa. AWS Solutions Architect en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 2 de 4.

¿Cuánto tiempo toma la lección «Step Functions: orquestación de flujos de trabajo sin servidor»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de AWS Solutions Architect?

Sí. Cada lección de AWS Solutions Architect incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. EventBridge: bus de eventos y reglas
  2. Step Functions: orquestación de flujos de trabajo sin servidor
  3. Kinesis Data Streams para el procesamiento de eventos en tiempo real
  4. Patrones de coreografía frente a orquestación
← Volver a AWS Solutions Architect