DEV Community

Cover image for Primeros Pasos con AWS CDK en Linux: Guía Completa de Instalación
Cristian Paniagua
Cristian Paniagua

Posted on

Primeros Pasos con AWS CDK en Linux: Guía Completa de Instalación

Primeros Pasos con AWS CDK en Linux: Guía Completa de Instalación

La Infraestructura como Código (IaC) ha revolucionado la forma en que gestionamos recursos en la nube, y AWS Cloud Development Kit (CDK) lo lleva al siguiente nivel al permitirte definir infraestructura usando lenguajes de programación familiares. En esta guía, te mostraré cómo configurar AWS CDK en Linux, desde la instalación hasta el despliegue de tu primer stack.

¿Qué es AWS CDK?

AWS CDK es un framework de desarrollo de software de código abierto que te permite definir infraestructura en la nube usando lenguajes de programación como TypeScript, Python, Java y C#. A diferencia de las plantillas tradicionales de CloudFormation escritas en JSON o YAML, CDK te permite aprovechar todo el poder de los lenguajes de programación, incluyendo bucles, condicionales y patrones de diseño orientado a objetos.

¿Por Qué Elegir CDK?

  • Seguridad de Tipos: Detecta errores en tiempo de compilación, no en tiempo de despliegue
  • Soporte de IDE: Obtén autocompletado, documentación en línea y herramientas de refactorización
  • Reutilización: Crea y comparte constructos como librerías
  • Menos Código Repetitivo: Escribe menos código comparado con CloudFormation puro
  • Abstracciones de Alto Nivel: Usa constructos predefinidos que siguen las mejores prácticas de AWS

Requisitos Previos

Antes de comenzar, asegúrate de tener:

  • Un sistema Linux (Ubuntu, Debian, Fedora, CentOS o Arch)
  • Una cuenta activa de AWS
  • Familiaridad básica con la terminal
  • Privilegios sudo
  • Aproximadamente 15 minutos de tu tiempo

Paso 1: Instalar Node.js

AWS CDK requiere Node.js versión 14.15.0 o superior.

Ubuntu/Debian

# Actualizar índice de paquetes
sudo apt update

# Instalar Node.js y npm
sudo apt install nodejs npm -y

# O instalar la última versión LTS usando NodeSource
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt install nodejs -y
Enter fullscreen mode Exit fullscreen mode

Fedora/RHEL/CentOS

# Instalar Node.js y npm
sudo dnf install nodejs npm -y

# O usando NodeSource
curl -fsSL https://rpm.nodesource.com/setup_lts.x | sudo bash -
sudo dnf install nodejs -y
Enter fullscreen mode Exit fullscreen mode

Arch Linux

sudo pacman -S nodejs npm
Enter fullscreen mode Exit fullscreen mode

Verifica la instalación:

node --version
npm --version
Enter fullscreen mode Exit fullscreen mode

Consejo Pro: Si necesitas gestionar múltiples versiones de Node.js, considera usar nvm (Node Version Manager).

Paso 2: Instalar AWS CLI

La Interfaz de Línea de Comandos de AWS es esencial para gestionar tus credenciales y recursos de AWS.

Ubuntu/Debian

sudo apt install awscli -y
Enter fullscreen mode Exit fullscreen mode

Fedora/RHEL/CentOS

sudo dnf install awscli -y
Enter fullscreen mode Exit fullscreen mode

Usando pip (todas las distribuciones)

pip3 install awscli --user
Enter fullscreen mode Exit fullscreen mode

Verifica la instalación:

aws --version
Enter fullscreen mode Exit fullscreen mode

Paso 3: Configurar Credenciales de AWS

Ahora necesitamos configurar tus credenciales de AWS. Necesitarás tu AWS Access Key ID y Secret Access Key. Si aún no las tienes, créalas en la Consola de IAM de AWS.

Ejecuta el comando de configuración:

aws configure
Enter fullscreen mode Exit fullscreen mode

Se te pedirá que ingreses:

AWS Access Key ID [None]: TU_ACCESS_KEY_ID
AWS Secret Access Key [None]: TU_SECRET_ACCESS_KEY
Default region name [None]: us-east-1
Default output format [None]: json
Enter fullscreen mode Exit fullscreen mode

Nota de Seguridad: Nunca subas tus credenciales de AWS al control de versiones. Considera usar AWS IAM Identity Center (anteriormente AWS SSO) para mayor seguridad en entornos de producción.

Paso 4: Instalar AWS CDK

¡Ahora viene lo principal! Instala el CLI de AWS CDK globalmente usando npm:

sudo npm install -g aws-cdk
Enter fullscreen mode Exit fullscreen mode

Verifica la instalación:

cdk --version
Enter fullscreen mode Exit fullscreen mode

¡Felicidades! AWS CDK está ahora instalado en tu sistema Linux. 🎉

Paso 5: Preparar tu Entorno de AWS (Bootstrap)

Antes de poder desplegar aplicaciones CDK, necesitas preparar tu entorno de AWS. Esto crea los recursos necesarios (como un bucket S3) que CDK usa para almacenar artefactos de despliegue.

cdk bootstrap
Enter fullscreen mode Exit fullscreen mode

Solo necesitas hacer esto una vez por combinación de cuenta/región de AWS.

Paso 6: Crear tu Primer Proyecto CDK

Vamos a crear un proyecto CDK simple para verificar que todo funciona correctamente.

Crear un Directorio de Proyecto

mkdir mi-primera-app-cdk
cd mi-primera-app-cdk
Enter fullscreen mode Exit fullscreen mode

Inicializar una Aplicación CDK

Usaremos TypeScript para este ejemplo:

cdk init app --language typescript
Enter fullscreen mode Exit fullscreen mode

Esto crea una estructura de proyecto completa con:

  • lib/ - Definiciones de tus stacks CDK
  • bin/ - Punto de entrada para tu aplicación CDK
  • test/ - Pruebas unitarias
  • package.json - Dependencias de Node.js
  • cdk.json - Configuración de CDK

Instalar Dependencias

npm install
Enter fullscreen mode Exit fullscreen mode

Paso 7: Construir tu Primer Stack

Vamos a crear un bucket S3 simple para demostrar CDK en acción.

Abre lib/mi-primera-app-cdk-stack.ts y reemplaza su contenido con:

import * as cdk from 'aws-cdk-lib';
import * as s3 from 'aws-cdk-lib/aws-s3';
import { Construct } from 'constructs';

export class MiPrimeraAppCdkStack extends cdk.Stack {
  constructor(scope: Construct, id: string, props?: cdk.StackProps) {
    super(scope, id, props);

    // Crear un bucket S3 con versionado habilitado
    const bucket = new s3.Bucket(this, 'MiPrimerBucket', {
      versioned: true,
      removalPolicy: cdk.RemovalPolicy.DESTROY,
      autoDeleteObjects: true,
      encryption: s3.BucketEncryption.S3_MANAGED,
    });

    // Mostrar el nombre del bucket
    new cdk.CfnOutput(this, 'NombreBucket', {
      value: bucket.bucketName,
      description: 'El nombre del bucket S3',
    });
  }
}
Enter fullscreen mode Exit fullscreen mode

¿Qué Está Pasando Aquí?

  • Estamos importando las librerías necesarias de CDK
  • Creando un bucket S3 con versionado habilitado
  • Estableciendo una política de eliminación para destruir el bucket cuando se elimine el stack
  • Habilitando la eliminación automática de objetos
  • Agregando cifrado del lado del servidor
  • Mostrando el nombre del bucket para fácil referencia

Paso 8: Sintetizar la Plantilla de CloudFormation

Antes de desplegar, veamos qué plantilla de CloudFormation genera CDK:

cdk synth
Enter fullscreen mode Exit fullscreen mode

Este comando genera una plantilla de CloudFormation desde tu código CDK. Verás la salida en YAML en tu terminal.

Paso 9: Previsualizar Cambios

Antes de desplegar, es una buena práctica ver qué cambios se realizarán:

cdk diff
Enter fullscreen mode Exit fullscreen mode

Paso 10: Desplegar tu Stack

Ahora el momento de la verdad—vamos a desplegar en AWS:

cdk deploy
Enter fullscreen mode Exit fullscreen mode

CDK te mostrará los cambios y pedirá confirmación. Escribe y y presiona Enter.

Después de un minuto o dos, ¡tu stack estará desplegado! Verás el nombre del bucket en las salidas.

Verificar en la Consola de AWS

Dirígete a la Consola de S3 para ver tu bucket recién creado.

Hoja de Referencia de Comandos Esenciales de CDK

Aquí están los comandos que usarás con más frecuencia:

Comando Descripción
cdk init Inicializar un nuevo proyecto CDK
cdk synth Sintetizar plantilla de CloudFormation
cdk diff Comparar stack desplegado con estado actual
cdk deploy Desplegar stack en AWS
cdk destroy Eliminar stack de AWS
cdk list Listar todos los stacks en la aplicación
cdk doctor Verificar posibles problemas
cdk watch Observar cambios y desplegar automáticamente

Paso 11: Limpiar

Para evitar incurrir en cargos, vamos a destruir el stack:

cdk destroy
Enter fullscreen mode Exit fullscreen mode

Confirma escribiendo y cuando se te solicite.

Mejores Prácticas para el Desarrollo con CDK

Ahora que tienes CDK configurado, aquí hay algunas mejores prácticas a seguir:

1. Usa TypeScript para Seguridad de Tipos

TypeScript proporciona excelente soporte de IDE y detecta errores antes del despliegue:

// TypeScript detectará este error en tiempo de compilación
const bucket = new s3.Bucket(this, 'MiBucket', {
  versioned: 'yes', // ❌ Error: El tipo 'string' no es asignable al tipo 'boolean'
});
Enter fullscreen mode Exit fullscreen mode

2. Organiza tus Stacks

Para proyectos más grandes, separa las responsabilidades en múltiples stacks:

// networking-stack.ts
export class NetworkingStack extends cdk.Stack { }

// database-stack.ts
export class DatabaseStack extends cdk.Stack { }

// application-stack.ts
export class ApplicationStack extends cdk.Stack { }
Enter fullscreen mode Exit fullscreen mode

3. Usa Variables de Entorno

Haz que tus stacks sean reutilizables entre entornos:

const app = new cdk.App();

new MyStack(app, 'DevStack', {
  env: { account: '123456789', region: 'us-east-1' },
  stage: 'dev',
});

new MyStack(app, 'ProdStack', {
  env: { account: '987654321', region: 'us-west-2' },
  stage: 'prod',
});
Enter fullscreen mode Exit fullscreen mode

4. Aprovecha los Constructos

Usa constructos de alto nivel (L2 y L3) que encapsulan mejores prácticas:

// L1 (bajo nivel) - más verboso
new s3.CfnBucket(this, 'MiBucket', {
  bucketName: 'mi-bucket',
  versioningConfiguration: {
    status: 'Enabled',
  },
});

// L2 (alto nivel) - recomendado
new s3.Bucket(this, 'MiBucket', {
  versioned: true,
});
Enter fullscreen mode Exit fullscreen mode

5. Escribe Pruebas

CDK soporta pruebas unitarias desde el inicio:

import { Template } from 'aws-cdk-lib/assertions';
import * as MyStack from '../lib/my-stack';

test('Bucket S3 Creado', () => {
  const app = new cdk.App();
  const stack = new MyStack.MyStack(app, 'MyTestStack');
  const template = Template.fromStack(stack);

  template.hasResourceProperties('AWS::S3::Bucket', {
    VersioningConfiguration: {
      Status: 'Enabled',
    },
  });
});
Enter fullscreen mode Exit fullscreen mode

Ejecuta las pruebas con:

npm test
Enter fullscreen mode Exit fullscreen mode

Solución de Problemas Comunes

Problema: "Command not found: cdk"

Solución: Asegúrate de que el directorio bin global de npm esté en tu PATH:

echo 'export PATH="$HOME/.npm-packages/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
Enter fullscreen mode Exit fullscreen mode

Problema: "Need to perform AWS calls for account..."

Solución: Ejecuta cdk bootstrap para preparar tu entorno de AWS.

Problema: Errores de Permisos Denegados

Solución: Verifica que tus credenciales de AWS tengan los permisos necesarios. Para desarrollo, podrías necesitar AdministratorAccess, pero en producción, usa políticas IAM de mínimo privilegio.

Problema: Permiso denegado al instalar paquetes npm globalmente

Si obtienes errores de permisos, configura npm para usar un directorio diferente:

mkdir ~/.npm-global
npm config set prefix '~/.npm-global'
echo 'export PATH=~/.npm-global/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
npm install -g aws-cdk
Enter fullscreen mode Exit fullscreen mode

Problema: Conflictos de Versión de Node

Solución: Usa nvm para gestionar versiones de Node.js:

# Instalar nvm
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.0/install.sh | bash

# Reiniciar terminal o cargar perfil
source ~/.bashrc

# Instalar y usar Node.js 18
nvm install 18
nvm use 18
Enter fullscreen mode Exit fullscreen mode

Próximos Pasos

¡Felicidades! Ahora tienes un entorno de desarrollo de AWS CDK completamente funcional en Linux. Aquí está lo que puedes explorar a continuación:

  1. Aprende Patrones de CDK: Visita el sitio web CDK Patterns para patrones de arquitectura comunes
  2. Explora Constructos de AWS: Navega por el Construct Hub para constructos predefinidos
  3. Toma el Workshop de CDK: Completa el CDK Workshop oficial
  4. Construye Proyectos Reales: Intenta crear una API serverless, un sitio web estático o un pipeline de datos
  5. Únete a la Comunidad: Participa en las discusiones de GitHub de AWS CDK

Recursos Útiles

Conclusión

AWS CDK transforma la gestión de infraestructura al llevar el poder de los lenguajes de programación a la infraestructura en la nube. Con CDK instalado en tu sistema Linux, ahora estás equipado para definir, desplegar y gestionar recursos de AWS usando código con el que ya estás familiarizado.

El viaje desde CloudFormation tradicional a CDK puede parecer desalentador al principio, pero los beneficios—seguridad de tipos, soporte de IDE, reutilización y menos código repetitivo—hacen que valga la pena la inversión.

¿Qué construirás con CDK? ¡Comparte tus proyectos en los comentarios! 👇


¿Te resultó útil esta guía? Sígueme para más contenido sobre AWS y DevOps. ¿Tienes preguntas? ¡Déjalas en los comentarios!


Tags: #aws #cdk #devops #infraestructura #typescript #cloudformation #iac #tutorial #linux #principiantes

Top comments (0)