Funciones Serverless en TypeScript: AWS Lambda de la A a la Z

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 con AWS Lambda

\n\n

La arquitectura Serverless se ha convertido en el estándar del desarrollo moderno en la nube. AWS Lambda permite ejecutar código sin gestionar servidores, y TypeScript añade tipado estricto y facilidad de desarrollo. En este artículo analizaremos todo el proceso: desde la creación de la primera función hasta el despliegue en producción. Aprenderás a escribir funciones serverless eficientes en TypeScript, trabajar con disparadores y manejar errores.

\n\n

Las funciones serverless son ideales para microservicios, procesamiento de eventos, webhooks y tareas en segundo plano. TypeScript hace que el código sea más seguro y predecible, lo cual es crítico para soluciones en producción.

\n\n

1. Configuración del entorno para AWS Lambda en TypeScript

\n\n

Antes de comenzar, instala las herramientas necesarias. Necesitarás Node.js (versión 18+), npm y AWS CLI.

\n\n

1.1. Instalación de dependencias

\n\n
npm init -y\nnpm install -D typescript @types/node @aws-sdk/client-lambda\nnpm install aws-lambda @types/aws-lambda\n
\n\n

1.2. Configuración de TypeScript

\n\n

Crea el archivo tsconfig.json con la configuración para Lambda:

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

1.3. Instalación de AWS CLI

\n\n

Descarga y configura AWS CLI desde la fuente oficial. Después de la instalación, ejecuta:

\n\n
aws configure\n
\n\n

Ingresa tu Access Key ID, Secret Access Key, región (por ejemplo, us-east-1) y formato de salida (json).

\n\n

2. Creación de la primera función serverless en TypeScript

\n\n

La estructura del proyecto debe verse así:

\n\n
my-lambda-project/\n├── src/\n│   └── handler.ts\n├── dist/\n├── tsconfig.json\n├── package.json\n└── .gitignore\n
\n\n

2.1. Manejador básico de Lambda

\n\n

Crea el archivo src/handler.ts con una función simple:

\n\n
import { Context, APIGatewayProxyEvent, APIGatewayProxyResult } from 'aws-lambda';\n\ninterface HelloResponse {\n  message: string;\n  timestamp: string;\n  eventType: string;\n}\n\nexport const handler = async (\n  event: APIGatewayProxyEvent,\n  context: Context\n): Promise<APIGatewayProxyResult> => {\n  console.log('Event:', JSON.stringify(event, null, 2));\n  console.log('Context:', context);\n\n  const response: HelloResponse = {\n    message: '¡Hola desde AWS Lambda con TypeScript!',\n    timestamp: new Date().toISOString(),\n    eventType: event.httpMethod || 'UNKNOWN'\n  };\n\n  return {\n    statusCode: 200,\n    headers: {\n      'Content-Type': 'application/json',\n      'Access-Control-Allow-Origin': '*'\n    },\n    body: JSON.stringify(response)\n  };\n};\n
\n\n

2.2. Compilación de TypeScript

\n\n

Agrega los scripts en package.json:

\n\n
"scripts": {\n  "build": "tsc",\n  "watch": "tsc --watch",\n  "clean": "rm -rf dist"\n}\n
\n\n

Ejecuta la compilación:

\n\n
npm run build\n
\n\n

Verifica que en la carpeta dist aparezca el archivo handler.js.

\n\n

3. Despliegue de la función Lambda en AWS

\n\n

Hay varias formas de desplegar. Veamos la más sencilla: a través de AWS CLI.

\n\n

3.1. Empaquetado de la función

\n\n

Crea un archivo ZIP con el código:

\n\n
cd dist\nzip -r ../function.zip .\ncd ..\n
\n\n

3.2. Creación de la función Lambda

\n\n

Ejecuta el comando de AWS CLI:

\n\n
aws lambda create-function \\\n  --function-name hello-typescript \\\n  --runtime nodejs18.x \\\n  --role arn:aws:iam::Y                

Blogs

Book Recommendations