DEV Community

Afu Tse (Chainiz)
Afu Tse (Chainiz)

Posted on

Desplegando con AWS CDK + EC2 (Guía paso a paso para principiantes)

¿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:

  1. Node.js ≥ 18 descargar

  2. AWS CLI Descargar
    Configúrala ejecutando:
    aws configure
    (Ingresa tus claves de acceso de AWS, región y formato de salida)

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

  1. Crear un certificado SSL/TLS en ACM (AWS Certificate Manager).
  2. Validarlo vía DNS usando Route53.
  3. 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)