Einführung in Serverless-Funktionen mit TypeScript
Serverless Computing verändert grundlegend die Art und Weise, wie Anwendungen entwickelt und bereitgestellt werden. Anstatt Server zu verwalten, konzentrieren sich Entwickler ausschließlich auf das Schreiben von Code. AWS Lambda ist der führende Dienst zur Erstellung von Serverless-Funktionen, und TypeScript fügt die Zuverlässigkeit statischer Typisierung hinzu.
In diesem Artikel werden wir im Detail besprechen, wie man eine Serverless-Funktion mit TypeScript unter Verwendung von AWS Lambda erstellt, konfiguriert und bereitstellt. Sie erfahren, wie Sie effizienten Code schreiben, Ereignisse verarbeiten und Lambda in andere AWS-Dienste integrieren.
Was ist AWS Lambda und warum TypeScript?
Grundlagen von AWS Lambda
AWS Lambda ist ein Rechendienst, der Ihren Code als Reaktion auf Ereignisse ausführt und die Rechenressourcen automatisch verwaltet. Sie zahlen nur für die tatsächlich genutzte Ausführungszeit (auf 1 ms gerundet).
Wichtige Merkmale:
- Ereignisgesteuerte Architektur — Die Funktion wird bei Eintreten eines Ereignisses ausgeführt (HTTP-Anfrage, Datei-Upload in S3, Änderung in DynamoDB)
- Automatische Skalierung — von einer Anfrage bis zu Tausenden gleichzeitig
- Unterstützung vieler Sprachen — Node.js (TypeScript), Python, Java, Go, .NET
- Kostenloses Kontingent — 1 Million Anfragen pro Monat (im Rahmen des Free Tier)
Vorteile von TypeScript für Lambda
TypeScript ist eine Erweiterung von JavaScript, die statische Typisierung hinzufügt. Für Serverless-Funktionen bietet dies:
- Weniger Laufzeitfehler — Der Compiler fängt Typenkonflikte vor dem Deployment ab
- Bessere Code-Dokumentation — Typen dienen als Selbstdokumentation
- Unterstützung moderner Funktionen — async/await, Dekorateure, Generics
- Integration mit AWS SDK — Vollständige Typen für alle AWS-Dienste
Erstellung und Konfiguration einer Lambda-Funktion mit TypeScript
Schritt 1: Projekt initialisieren
Erstellen wir ein neues Projekt und installieren die erforderlichen Abhängigkeiten:
mkdir my-lambda-functioncd my-lambda-functionnpm init -ynpm install --save-dev typescript @types/node aws-sdknpm install --save-dev @types/aws-lambdaSchritt 2: TypeScript konfigurieren
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 }, "include": ["src/**/*"], "exclude": ["node_modules", "dist"]}Schritt 3: Lambda-Funktion schreiben
Erstellen Sie das Verzeichnis src und die Datei 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 { // Parsen des Anforderungstextes const body: UserData = JSON.parse(event.body || '{}');
// Datenvalidierung 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' }) }; }