Funciones Serverless en TypeScript: AWS Lambda desde cero

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción a las funciones Serverless en TypeScript



La computación Serverless (sin servidor) cambia radicalmente el enfoque hacia el desarrollo y despliegue de aplicaciones. En lugar de administrar servidores, los desarrolladores se centran exclusivamente en escribir código. AWS Lambda es el servicio líder para crear funciones serverless, y TypeScript añade la confiabilidad de la tipificación estática.



En este artículo, analizaremos en detalle cómo crear, configurar y desplegar una función serverless en TypeScript usando AWS Lambda. Aprenderá a escribir código eficiente, procesar eventos e integrar Lambda con otros servicios de AWS.



¿Qué es AWS Lambda y por qué TypeScript?



Fundamentos de AWS Lambda



AWS Lambda es un servicio de cómputo que ejecuta su código en respuesta a eventos y administra automáticamente los recursos computacionales. Usted paga solo por el tiempo de ejecución realmente utilizado (redondeado a 1 ms).



Características clave:

  • Arquitectura orientada a eventos — la función se ejecuta cuando ocurre un evento (solicitud HTTP, carga de archivo en S3, cambio en DynamoDB)
  • Escalado automático — desde una solicitud hasta miles simultáneamente
  • Soporte para múltiples lenguajes — Node.js (TypeScript), Python, Java, Go, .NET
  • Límite gratuito — 1 millón de solicitudes por mes (dentro del Free Tier)


Ventajas de TypeScript para Lambda



TypeScript es una extensión de JavaScript que añade tipificación estática. Para funciones serverless, esto proporciona:

  • Menos errores en tiempo de ejecución — el compilador detecta discrepancias de tipos antes del despliegue
  • Mejor documentación del código — los tipos sirven como autodocumentación
  • Soporte para funcionalidades modernas — async/await, decoradores, genéricos
  • Integración con AWS SDK — tipos completos para todos los servicios de AWS


Creación y configuración de una función Lambda en TypeScript



Paso 1: Inicialización del proyecto



Crearemos un nuevo proyecto e instalaremos las dependencias necesarias:



mkdir my-lambda-functioncd my-lambda-functionnpm init -ynpm install --save-dev typescript @types/node aws-sdknpm install --save-dev @types/aws-lambda


Paso 2: Configuración de TypeScript



Cree el archivo tsconfig.json:



{  "compilerOptions": {    "target": "ES2020",    "module": "commonjs",    "lib": ["ES2020"],    "outDir": "./dist",    "rootDir": "./src",    "strict": true,    "esModuleInterop": true,    "skipLibCheck": true,    "forceConsistentCasingInFileNames": true,    "resolveJsonModule": true,    "declaration": true  },  "include": ["src/**/*"],  "exclude": ["node_modules", "dist"]}


Paso 3: Escritura de la función Lambda



Cree el directorio src y el archivo src/handler.ts:



import { Context, APIGatewayProxyEvent, APIGatewayProxyResult } from 'aws-lambda';

interface UserData { userId: string; name: string; email: string;}

export const handler = async ( event: APIGatewayProxyEvent, context: Context): Promise<APIGatewayProxyResult> => { console.log('Event:', JSON.stringify(event, null, 2)); console.log('Context:', context);

try { // Parseo del cuerpo de la solicitud const body: UserData = JSON.parse(event.body || '{}');

// Validación de datos if (!body.userId || !body.name || !body.email) { return { statusCode: 400, headers: { 'Content-Type': 'application/json', 'Access-Control-Allow-Origin': '*' }, body: JSON.stringify({ message: 'Missing required fields: userId, name, email' }) }; }

Blogs

Book Recommendations