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