Guía Paso a Paso para Configurar tu Primera Lambda en AWS CDK

AshelAshel
3 min read

AWS CDK (Cloud Development Kit) es una herramienta de IaC (Infrastructure as Code) que te permite definir infraestructura de AWS usando lenguajes de programación como TypeScript, Python, Java o C#.
En lugar de escribir plantillas YAML (como en AWS CloudFormation), usas código para describir tu infraestructura.

Pre-requisitos

  • Node.js v20 o superior.

  • Cuenta en AWS.

  • Tener configurado AWS CLI (aws configure) con tus credenciales.

  • Tener instalado CDK:

npm install -g aws-cdk

¿Listo? ¡Empecemos!

1. Crear un nuevo proyecto de CDK

Primero, crea una carpeta para tu proyecto y entra en ella:

mkdir my-first-lambda
cd mi-first-lambda

Inicializa un proyecto de CDK con TypeScript:

cdk init app --language=typescript

Esto te generará una estructura básica de proyecto.

✅ Si miras tu carpeta, verás directorios como /bin, /lib, y archivos de configuración como cdk.json, package.json, etc.

2. Escribir tu función Lambda

Crea una carpeta para tu función Lambda:

mkdir lambdas

Dentro, crea un archivo hello.ts con el siguiente conenido:

export const handler = async (event: any = {}): Promise<any> => {
  console.log('Request:', JSON.stringify(event, undefined, 2));
  return {
    statusCode: 200,
    body: JSON.stringify({ message: '¡Hola mundo desde AWS Lambda!' }),
  };
};

Simple, ¿no? 🎯 Esta función devuelve un mensaje ¡Hola mundo desde AWS Lambda!.

3. Definir tu Lambda en el Stack de CDK

Abre el archivo lib/mi-primera-lambda-stack.ts (el nombre cambia según tu proyecto) y modifica el contenido así:

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

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

    // Definir la función Lambda
    const helloLambda = new lambda.Function(this, 'HelloLambda', {
      runtime: lambda.Runtime.NODEJS_18_X, // Elige el runtime de Node.js
      handler: 'hello.handler',             // archivo.nombreExportado
      code: lambda.Code.fromAsset(path.join(__dirname, '../lambda')), // directorio de la función
    });
  }
}

Explicación rápida:

  • runtime: El entorno que ejecutará tu Lambda (Node.js 18 en este caso).

  • handler: El archivo y la función exportada (hello.handler).

  • code: Dónde se encuentra el código.

4. Compilar el proyecto

Cada vez que cambies el código en TypeScript, debes compilarlo para asegurarte que todo este correcto:

npm run build

Esto transformará tu TypeScript a JavaScript en la carpeta dist.

5. Verifica qué va a desplegar CDK

Antes de desplegar, puedes ver qué cambios hará CDK:

cdk diff

Este comando te muestra un "preview" de lo que se va a crear.

6. Desplegar a AWS 🚀

Como es la primera ves que vamos a realizar un despliegue desde CDK tenemos que prepara el entorno en AWS para poder realizar nuestros deploys. Para ello necesitamos ejecutar el siguiente comando

cdk bootstrap

Ahora sí, ¡momento épico! Desplega tu stack:

cdk deploy

Verás cómo CDK crea automáticamente todo: roles de IAM, la función Lambda, etc.

Al final, te mostrará la ARN (identificador único) de tu Lambda.

🎉 ¡Felicidades!

Ya tienes tu primera función Lambda desplegada en AWS usando infraestructura como código y TypeScript.

Puedes ir a la consola de AWS > Lambda y ver tu función en acción.

📈 ¿Qué sigue después?

  • Conectar tu Lambda a un API Gateway.

  • Agregar Variables de Entorno seguras.

  • Aprender sobre permisos IAM en profundidad.

  • Mejorar el rendimiento de tu Lambda.

¿Te gustaría que escriba un próximo post sobre cómo conectar esta Lambda a un endpoint API?
👉 ¡Déjame un comentario o escríbeme en redes!

#Serverless #AWSLambda #AWSCdk #NodeJS #TypeScript #InfraestructuraComoCodigo #Awshel

0
Subscribe to my newsletter

Read articles from Ashel directly inside your inbox. Subscribe to the newsletter, and don't miss out.

Written by

Ashel
Ashel