Inicio > Cursos > AWS para Developers > ECS y Fargate: Contenedores en la Nube
AWS para DevelopersDatos, Seguridad y ServerlessLección 11 de 12

ECS y Fargate: Contenedores en la Nube

ECS (Elastic Container Service) ejecuta tus contenedores Docker en AWS. Fargate elimina la necesidad de manejar servidores — solo defines CPU/RAM y AWS se encarga del resto.

Componentes: • Cluster: agrupacion logica de servicios • Task Definition: plantilla del contenedor (imagen, CPU, RAM, puertos, env vars) • Service: mantiene N copias de tu task corriendo (auto-healing) • ECR (Elastic Container Registry): Docker Hub privado de AWS

Fargate vs EC2 launch type: • Fargate: sin servidores, pagas por CPU/RAM por segundo. Ideal para la mayoria de apps. • EC2: tu manejas las instancias. Mas barato a gran escala, mas control.

# 1. Crear repositorio en ECR (registro privado de imagenes)
aws ecr create-repository --repository-name mi-app

# 2. Login a ECR
aws ecr get-login-password | docker login \
  --username AWS \
  --password-stdin 123456789.dkr.ecr.us-east-1.amazonaws.com

# 3. Build, tag y push de imagen
docker build -t mi-app .
docker tag mi-app:latest 123456789.dkr.ecr.us-east-1.amazonaws.com/mi-app:latest
docker push 123456789.dkr.ecr.us-east-1.amazonaws.com/mi-app:latest

# 4. Crear cluster ECS
aws ecs create-cluster --cluster-name mi-cluster

# 5. Registrar task definition
aws ecs register-task-definition --cli-input-json file://task-def.json

# 6. Crear servicio (mantiene 2 replicas corriendo)
aws ecs create-service \
  --cluster mi-cluster \
  --service-name mi-app-service \
  --task-definition mi-app:1 \
  --desired-count 2 \
  --launch-type FARGATE \
  --network-configuration "awsvpcConfiguration={subnets=[subnet-abc],securityGroups=[sg-123],assignPublicIp=ENABLED}"
// task-def.json
{
  "family": "mi-app",
  "networkMode": "awsvpc",
  "requiresCompatibilities": ["FARGATE"],
  "cpu": "256",
  "memory": "512",
  "containerDefinitions": [
    {
      "name": "api",
      "image": "123456789.dkr.ecr.us-east-1.amazonaws.com/mi-app:latest",
      "portMappings": [{ "containerPort": 3000 }],
      "environment": [
        { "name": "NODE_ENV", "value": "production" },
        { "name": "DATABASE_URL", "value": "postgres://..." }
      ],
      "logConfiguration": {
        "logDriver": "awslogs",
        "options": {
          "awslogs-group": "/ecs/mi-app",
          "awslogs-region": "us-east-1",
          "awslogs-stream-prefix": "api"
        }
      }
    }
  ]
}
ConsejoFargate + ALB es el combo mas comun. El ALB distribuye trafico entre las tasks de Fargate y hace health checks automaticos. Es como tener Kubernetes simplificado.
← Terraform e Infraestructura como CodigoCloudWatch: Monitoreo y Alertas →

Practica esta lección

Resuelve los ejercicios del curso de AWS para Developers en la app, gratis y con corrección automática.

Empezar a practicar