Einführung in Serverless-Funktionen in TypeScript mit AWS Lambda
\n\nDie Serverless-Architektur ist zum Standard der modernen Cloud-Entwicklung geworden. AWS Lambda ermöglicht die Ausführung von Code ohne Serververwaltung, und TypeScript fügt strenge Typisierung und Entwicklungskomfort hinzu. In diesem Artikel werden wir den gesamten Prozess durchgehen: von der Erstellung der ersten Funktion bis zum Deployment in die Produktion. Sie erfahren, wie Sie effiziente Serverless-Funktionen in TypeScript schreiben, mit Triggern arbeiten und Fehler behandeln.
\n\nServerless-Funktionen eignen sich ideal für Microservices, Ereignisverarbeitung, Webhooks und Hintergrundaufgaben. TypeScript macht den Code sicherer und vorhersagbarer, was für Produktionslösungen entscheidend ist.
\n\n1. Einrichtung der Umgebung für AWS Lambda in TypeScript
\n\nInstallieren Sie vor Beginn die erforderlichen Tools. Sie benötigen Node.js (Version 18+), npm und die AWS CLI.
\n\n1.1. Installation der Abhängigkeiten
\n\nnpm init -y\nnpm install -D typescript @types/node @aws-sdk/client-lambda\nnpm install aws-lambda @types/aws-lambda\n\n\n1.2. TypeScript-Konfiguration
\n\nErstellen Sie eine Datei tsconfig.json mit Einstellungen für Lambda:
{\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\n1.3. Installation der AWS CLI
\n\nLaden Sie die AWS CLI von der offiziellen Quelle herunter und konfigurieren Sie sie. Führen Sie nach der Installation Folgendes aus:
\n\naws configure\n\n\nGeben Sie Ihre Access Key ID, Ihren Secret Access Key, die Region (z. B. us-east-1) und das Ausgabeformat (json) ein.
2. Erstellung der ersten Serverless-Funktion in TypeScript
\n\nDie Projektstruktur sollte wie folgt aussehen:
\n\nmy-lambda-project/\n├── src/\n│ └── handler.ts\n├── dist/\n├── tsconfig.json\n├── package.json\n└── .gitignore\n\n\n2.1. Basis-Lambda-Handler
\n\nErstellen Sie eine Datei src/handler.ts mit einer einfachen Funktion:
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: 'Hello from AWS Lambda with 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\n2.2. Kompilierung von TypeScript
\n\nFügen Sie Skripte in package.json hinzu:
"scripts": {\n "build": "tsc",\n "watch": "tsc --watch",\n "clean": "rm -rf dist"\n}\n\n\nFühren Sie die Kompilierung aus:
\n\nnpm run build\n\n\nÜberprüfen Sie, ob im Ordner dist die Datei handler.js vorhanden ist.
3. Deployment der Lambda-Funktion auf AWS
\n\nEs gibt mehrere Möglichkeiten für das Deployment. Betrachten wir die einfachste – über die AWS CLI.
\n\n3.1. Paketierung der Funktion
\n\nErstellen Sie ein ZIP-Archiv mit dem Code:
\n\ncd dist\nzip -r ../function.zip .\ncd ..\n\n\n3.2. Erstellung der Lambda-Funktion
\n\nFühren Sie den AWS CLI-Befehl aus:
\n\naws lambda create-function \\\n --function-name hello-typescript \\\n --runtime nodejs18.x \\\n --role arn:aws:iam::Y