¿Quieres aprender a desplegar una aplicación en AWS de forma automatizada y profesional, pero sin complicarte con demasiados servicios?
En este tutorial te mostraré cómo levantar una demo llamada “Recetario Demo” (Web dinamica desarrollada con nodejs y express).
Ademas, usando AWS CDK (Cloud Development Kit) para generar la infraestructura en AWS.
Usaremos una arquitectura moderna con maquinas virtuales (EC2), balanceador de carga (ALB), autoescalado, y —si quieres ir más allá— un dominio propio con HTTPS gestionado por Route53 y ACM.
🧰 1. Preparar el entorno local
Antes de comenzar, asegúrate de tener las siguientes herramientas instaladas en tu máquina:
Node.js ≥ 18 descargar
AWS CLI Descargar
Configúrala ejecutando:
aws configure
(Ingresa tus claves de acceso de AWS, región y formato de salida)AWS CDK v2
Instálalo globalmente:
npm install -g aws-cdk
💡 AWS CDK (Cloud Development Kit) permite definir infraestructura de AWS usando código (TypeScript, Python, etc.) en lugar de escribir archivos YAML de CloudFormation.
📦 2. Instalar dependencias del proyecto
Primero, clona o descarga el repositorio.
Luego, en la raíz del proyecto, instala las dependencias del CDK:
npm install
Ahora, instala las dependencias de la aplicación Node.js (la app Express):
cd app && npm install && cd ..
🍳 3. Probar la aplicación Express localmente
Antes de desplegar en AWS, probemos que todo funcione en tu entorno local.
Ejecuta:
cd app && npm start
Luego abre en tu navegador http://localhost:3000
Deberías ver el recetario dinámico funcionando
Cuando termines, detén el servidor con Ctrl + C.
🧱 4. Entendiendo la estructura del proyecto CDK
El proyecto está dividido en varias partes:
- bin/aws-cdk-ec2.ts = Punto de entrada del proyecto CDK. Aquí se inicializa el stack.
- lib/aws-cdk-ec2-stack.ts = Define todos los recursos de AWS: VPC, EC2, ALB, Auto Scaling Group, y opcionalmente Route53 + ACM.
- app/ = Contiene la aplicación Express que se desplegará dentro de la instancia EC2.
Además, incluye scripts útiles como:
cdk synth # Genera la plantilla CloudFormation
cdk deploy # Despliega la infraestructura
cdk destroy # Elimina todo
⚙️ 5. Sintetizar la plantilla (CloudFormation)
Antes de desplegar, puedes ver el YAML que generará CDK ejecutando:
cdk synth
Si trabajas sin conexión a Internet (por ejemplo, en entornos sin permisos de red), puedes evitar las búsquedas automáticas (“lookups”) con:
CDK_DISABLE_CONTEXT_LOOKUPS=1 cdk synth
🌐 6. Despliegue básico (solo ALB con DNS público)
Antes de desplegar, revisa en la consola de AWS que no exista un stack fallido (estado ROLLBACK_COMPLETE).
Si lo hay, elimínalo con:
cdk destroy
o desde la consola de CloudFormation.
Ahora sí, ejecuta:
cdk deploy --require-approval never \
--parameters HostedZoneDomainName= \
--parameters HostedZoneId= \
--parameters SiteSubdomain=
🔒 7. Despliegue con dominio propio + HTTPS (Route53 + ACM)
¿Quieres un dominio bonito y seguro con HTTPS?
Solo necesitas tener una Hosted Zone en Route53 (mismo account/region).
Por ejemplo: tudominio.com
Ejecuta:
cdk deploy --require-approval never \
--parameters HostedZoneDomainName=tudominio.com \
--parameters HostedZoneId=ZXXXXXX12345 \
--parameters SiteSubdomain=recetas
Esto hará tres cosas automáticamente:
- Crear un certificado SSL/TLS en ACM (AWS Certificate Manager).
- Validarlo vía DNS usando Route53.
- Crear un registro A tipo alias que apunta al Load Balancer.
Tras la propagación DNS, podrás acceder a https://recetas.tudominio.com
🧩 8. Verificar los recursos en AWS
Una vez desplegado, puedes explorar tu infraestructura:
- EC2 → Instances: verás las instancias t3.micro creadas.
- EC2 → Load Balancers: revisa el ALB y que esté “healthy”.
- Route53 → Hosted zones: confirma el registro A creado automáticamente.
Si ves que la app no responde, revisa los “health checks” del ALB y el grupo de autoescalado.
📈 9. Escalado automático y salud
El Auto Scaling Group (ASG) incluye comprobaciones automáticas de salud (HTTP) y escalará cuando la CPU supere el 50%.
Puedes ajustar los parámetros en lib/aws-cdk-ec2-stack.ts:
minCapacity: 1,
maxCapacity: 3,
De este modo, si la aplicación recibe más tráfico, AWS levantará más instancias automáticamente.
📤 10. Salidas importantes (Outputs)
En la consola de CloudFormation, sección Outputs, encontrarás valores útiles:
- LoadBalancerDNS = URL pública del ALB (si no se usa dominio).
- Route53RecordFqdn = Nombre completo del registro DNS.
- CertificateArn = ARN del certificado HTTPS creado.
🧹 11. Limpieza de recursos (¡importante!)
Para evitar cargos innecesarios, elimina los recursos al terminar:
cdk destroy --force
Esto eliminará automáticamente la VPC, ALB, ASG, instancias, Route53 records y certificados ACM generados por el stack.
🎯 Conclusión
Con solo unas líneas de código en CDK, creaste toda una infraestructura productiva:
- Una VPC
- Instancias EC2 autoescalables
- Balanceador de carga
- Certificado HTTPS
- Dominio personalizado.
Este enfoque no solo te ahorra tiempo, sino que te introduce a la infraestructura como código (IaC), una de las habilidades más demandadas en el mundo Cloud ☁️.
Top comments (0)