¿Qué es Elastic Container Service (ECS)?
Amazon Elastic Container Service (ECS) es un servicio de orquestación de contenedores. Permite desplegar, administrar y escalar aplicaciones en contenedores (Docker) de manera sencilla. ECS se encarga de colocar los contenedores en la infraestructura adecuada, gestionar su ciclo de vida y asegurar que la aplicación esté disponible muy fácilmente.
¿Para qué nos sirve?
ECS elimina la complejidad de gestionar manualmente el software de orquestación de contenedores. Nos sirve para:
- Escalabilidad: Aumentar o disminuir el número de contenedores automáticamente según la demanda.
- Alta Disponibilidad: Ejecutar la aplicación en múltiples zonas de disponibilidad para evitar caídas.
- Gestión Simplificada: Integrarse nativamente con otros servicios de AWS como balanceadores de carga (ALB), seguridad (IAM) y monitoreo (CloudWatch).
Crear un Elastic Container Service (ECS)
Dirígete al servicio Amazon Elastic Container Service en la consola de AWS:

1. Crear la "Task Definition"
La Task Definition es el plano de la aplicación, define qué imagen de Docker usar, cuánta memoria necesita y cómo debe comportarse.
- En el menú lateral, ve a
Task Definitions > Create new task definition. - Configuración de la tarea:
- Family name: Asigna un nombre, por ejemplo:
task-name. - Launch Type: Selecciona AWS Fargate (sin gestionar servidores).
- OS/Architecture: Linux/X86_64.
- Task Size: Define la cantidad de CPU y RAM requerida para tu contenedor.
- Family name: Asigna un nombre, por ejemplo:

- Container Details
- Name:
container-name. - Image URI: Pega la URI de tu imagen (desde ECR o Docker Hub).
- Container Port: Especifica el puerto que expusiste en tu Dockerfile (ej. 3000, 8080).
- Name:

- (Opcional) Define las variables de entorno si tu aplicación las requiere y finaliza la creación.
2. Crear el Cluster
El clúster es la agrupación lógica de recursos donde se ejecutarán tus tareas.
- Ir a
Clusters > Create Cluster. - Cluster name:
test-cluster. - Infrastructure: Asegúrate de que AWS Fargate (serverless) esté marcado.
- Haz clic en Create.

3. Crear el servicio y el balanceador de carga
En este paso uniremos el contenedor con la red y el balanceador para exponerlo a internet.
- Entra al clúster que acabas de crear.
- En la pestaña Services, haz clic en Create.
- Service details:
- Selecciona la "Task Definition" (Family) que creaste en el paso 1.

- Deployment configuration
- Desired tasks: (Se recomienda al menos 2 para garantizar alta disponibilidad y probar el balanceo de carga).
- Networking:
- Security Group: Crea uno nuevo.
Abre el puerto de tu app (Custom TCP) y permite tráfico desde "Anywhere" (0.0.0.0/0) temporalmente (luego lo restringiremos al ALB).

- Load balancing: Activa esta opción para distribuir el tráfico.
- Load balancer type: Selecciona Application Load Balancer (ALB).
- Load balancer name: Escribe un nombre (ej: api-alb). AWS creará el recurso automáticamente.
- Container to load balance: Selecciona tu contenedor y el puerto configurado previamente.
- Target group: Deja que cree uno nuevo (ej: create new).
- Listener: Port 80 (HTTP).


- Verificar el despliegue:
- Ve a la consola de
EC2 > Load balancers. - Selecciona el load balancer (ALB) creado.
- Copia el DNS name, pégalo en tu navegador y verifica que tu aplicación responda.
- Ve a la consola de
4. El API gateway
Para añadir una capa de gestión, seguridad y enrutamiento, colocaremos un API Gateway delante del balanceador.

- Ve a la consola de API Gateway.
- Selecciona HTTP API (es más barata y rápida que REST API para este caso) o REST API.
- Crear integración:
- Tipo de integración: HTTP.
- URL del punto de enlace: Usa el DNS del Balanceador de Carga (ALB)

- Configurar rutas:
- Define las rutas que manejará tu API (ej: POST /usuarios, GET /productos).

- Deploy
- Crea una etapa (Stage) llamada
prodov1.
- Crea una etapa (Stage) llamada

- Vamos
Deploy > Stagesen el menú izquierdo. Allí encontrarás la Invoke URL. Esta es la URL pública final para acceder a tu API.

La arquitectura final es: Usuario -> API Gateway -> ALB -> ECS Fargate -> RDS.