July 31, 2025

Batch

📘 ¿Qué es AWS Batch?

AWS Batch es un servicio completamente gestionado que permite ejecutar cargas por lotes (batch jobs) en AWS. Se encarga de planificar, programar y ejecutar trabajos en contenedores según los recursos necesarios.

  • 🛠️ Automatiza la provisión de recursos (EC2, Fargate)

  • 🐳 Ejecuta jobs en contenedores Docker

  • 🔄 Ideal para cargas transitorias, escalables y basadas en cola


🧩 Casos de uso

  • 🧬 Análisis científico y procesamiento de datos genómicos

  • 🎞️ Renderizado de video, imágenes y simulaciones 3D

  • 📊 ETL de grandes volúmenes de datos

  • 🧠 Entrenamiento por lotes de modelos ML

  • 📝 Conversión de documentos, compresión masiva, etc.


⚙️ Componentes principales de AWS Batch

ComponenteDescripción
JobUna tarea única a ejecutar
Job DefinitionPlantilla que describe cómo ejecutar un job (imagen, CPU, memoria, comandos)
Job QueueCola que organiza los jobs según prioridad
Compute Environment (CE)Donde se ejecutan los jobs (EC2, Fargate)

🔄 Flujo de trabajo de AWS Batch

1. Creas un Compute Environment (puede ser EC2 On-Demand, Spot o Fargate)
2. Defines una Job Queue (con prioridad y vinculada al CE)
3. Creas una Job Definition (imagen, memoria, vCPU, comandos, IAM)
4. Envío de jobs (submit-job) a la cola → Batch los ejecuta automáticamente

🧱 Compute Environment

Tipo de CEDescripción
EC2 (Managed)AWS aprovisiona instancias automáticamente
EC2 (Unmanaged)Tú gestionas las instancias manualmente
FargateServerless, sin necesidad de gestionar instancias
  • Puedes usar instancias Spot para reducir costos.

  • Se pueden usar varios tipos de instancias (m3, c5, r5, etc.)


🧾 Job Definition

Incluye:

  • Imagen Docker

  • vCPUs y memoria requerida

  • Variables de entorno

  • Montaje de volúmenes (EFS, S3)

  • IAM role para permisos (por ejemplo, acceso a S3 o DynamoDB)

  • Retry strategies (para reintentos automáticos)

{
  "jobDefinitionName": "procesamiento-lotes",
  "type": "container",
  "containerProperties": {
    "image": "123456789.dkr.ecr.us-east-1.amazonaws.com/procesador",
    "vcpus": 2,
    "memory": 4096,
    "command": ["python", "procesar.py"],
    "jobRoleArn": "arn:aws:iam::123456789:role/BatchExecutionRole"
  }
}

🚀 Envío de jobs (CLI / SDK)

aws batch submit-job \
  --job-name job-prueba \
  --job-queue cola-principal \
  --job-definition procesamiento-lotes:1

Monitoreo de jobs

aws batch describe-jobs --jobs <jobId>

🧠 Job Queue

  • Puedes tener varias colas con diferentes prioridades.

  • Las colas se asocian a uno o más Compute Environments.

  • AWS Batch elige el CE más adecuado según recursos disponibles y prioridad.


📦 Integración con otros servicios

ServicioIntegración
ECS / FargateEjecuta contenedores en Batch
CloudWatch LogsLogging por job
IAMControl de permisos y ejecución de tareas
S3 / EFSFuente/destino de datos a procesar
Step FunctionsOrquestación de jobs más complejos
EventBridgeAutomatización por cron o eventos

🔐 Seguridad

  • IAM Roles para ejecutar jobs y acceder a servicios como S3 o DynamoDB

  • Control de acceso por Resource Policies en job definitions o queues

  • VPCs privadas y subnets para aislar entornos Batch


📈 Monitoreo

HerramientaUso
CloudWatch LogsRegistros de ejecución de cada job
CloudWatch MetricsSeguimiento de jobs activos, fallidos, terminados
Batch ConsoleVista de colas, entornos, jobs y su estado

💡 Buenas prácticas

  • Usa instancias Spot para reducir costos hasta 90%

  • Utiliza Fargate para jobs pequeños o cargas impredecibles

  • Asocia EFS si necesitas compartir archivos entre jobs

  • Usa dependencias entre jobs (dependsOn) para encadenarlos

  • Orquesta múltiples jobs con Step Functions

  • Mantén imágenes optimizadas y seguras (usa ECR con escaneo)


📊 Comparación rápida: Batch vs otras opciones

ServicioTipoIdeal para…
AWS BatchBatch por contenedorProcesamiento por lotes escalable
LambdaServerless por eventoTareas ligeras y eventos rápidos
Step FunctionsOrquestaciónCoordinación de múltiples tareas
GlueETL administradoProcesamiento de datos estructurados
FargateContenedores on-demandMicroservicios, APIs, tareas programadas

🎓 Preguntas tipo certificación

  1. ¿AWS Batch requiere que administres servidores?

    • ❌ No, puede ser serverless (Fargate) o gestionado
  2. ¿Dónde defines el número de CPUs para un job?

    • ✅ En la Job Definition
  3. ¿Cómo controlas qué Compute Environment se usa?

    • ✅ A través de la Job Queue
  4. ¿Puedes usar instancias Spot con AWS Batch?

    • ✅ Sí, para reducir costos
  5. ¿Qué servicio usarías para programar la ejecución periódica de jobs?

    • ✅ EventBridge (anteriormente CloudWatch Events)

📚 Recursos útiles