Serverless-Funktionen in TypeScript: AWS Lambda von A bis Z

Online Python-Trainer für Anfänger

Lernen Sie Python einfach ohne theoretische Überlastung. Lösen Sie praktische Aufgaben mit automatischer Überprüfung und schreiben Sie Code direkt im Browser.

Kurs starten

Serverless-Funktionen in TypeScript: Vollständiger Leitfaden zu AWS Lambda



Die Serverless-Architektur hat die Herangehensweise an die Backend-Entwicklung revolutioniert. Anstatt Server zu verwalten, können sich Entwickler ausschließlich auf die Geschäftslogik konzentrieren. AWS Lambda ist einer der beliebtesten Dienste zum Ausführen von serverless-Funktionen. In diesem Leitfaden werden wir die Erstellung, Einrichtung und das Deployment von Lambda-Funktionen in TypeScript behandeln – von grundlegenden Konzepten bis hin zu Production-Lösungen.



Warum TypeScript für AWS Lambda?



TypeScript fügt JavaScript eine statische Typisierung hinzu, die für serverless-Funktionen entscheidend ist:



  • Typsicherheit – verhindert Fehler bereits zur Kompilierzeit
  • Autovervollständigung – die IDE schlägt Methoden des AWS SDK vor
  • Lesbarkeit – Schnittstellen und Typen dokumentieren die Datenstruktur
  • Skalierbarkeit – einfachere Wartung des Codes bei Projektwachstum


Projekt einrichten



1. Initialisierung und Installation der Abhängigkeiten



Erstellen Sie ein neues Projekt und installieren Sie die erforderlichen Pakete:



mkdir my-lambda-projectcd my-lambda-projectnpm init -y

npm install @types/aws-lambda aws-sdknpm install -D typescript ts-node @types/node


2. TypeScript-Konfiguration



Erstellen Sie die Datei 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,    "declarationMap": true,    "sourceMap": true  },  "include": ["src/**/*"],  "exclude": ["node_modules", "dist"]}


Erstellen der ersten Lambda-Funktion



Grundlegende Handler-Struktur



Erstellen Sie die Datei src/handler.ts:



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

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

export const handler: Handler<APIGatewayProxyEvent, APIGatewayProxyResult> = async (event) => { try { // Parsen des Anforderungskörpers const body: UserData = JSON.parse(event.body || '{}'); // Validierung if (!body.userId || !body.name) { return { statusCode: 400, headers: { 'Content-Type': 'application/json', 'Access-Control-Allow-Origin': '*' }, body: JSON.stringify({ error: 'Missing required fields' }) }; }

// Geschäftslogik const result = { id: body.userId, displayName: body.name.toUpperCase(), createdAt: new Date().toISOString() };

return { statusCode: 200, headers: { 'Content-Type': 'application/json', 'Access-Control-Allow-Origin': '*' }, body: JSON.stringify(result) }; } catch (error) { console.error('Fehler bei der Verarbeitung der Anfrage:', error); return { statusCode: 500, body: JSON.stringify({ error: 'Internal server error' }) }; }};


Arbeiten mit Umgebungsvariablen und Geheimnissen



Verwenden Sie Umgebungsvariablen für die Konfiguration:



import { Handler } from 'aws-lambda';

interface Config { DB_TABLE: string; MAX_RETRIES: number;}

export const handler: Handler = async (event) => { const config: Config = { DB_TABLE: process.env.DB_TABLE || 'default-table', MAX_RETRIES: parseInt(process.env.MAX_RETRIES || '3', 10) };

// Verwenden Sie AWS Secrets Manager oder Parameter Store // für sensible Daten return { statusCode: 200, body: JSON.stringify({ table: config.DB_TABLE }) };};


Fortgeschrittene Techniken



1. Verarbeitung

Blogs

Buchempfehlungen