Einführung in die Serverless-Architektur und AWS Lambda
Die moderne Webentwicklung bewegt sich rasant in Richtung serverloser (serverless) Berechnungen. Dieses Paradigma ermöglicht es Entwicklern, sich auf das Schreiben der Geschäftslogik zu konzentrieren, ohne sich um die Verwaltung der Infrastruktur kümmern zu müssen. AWS Lambda ist einer der beliebtesten Dienste zur Implementierung von serverless Funktionen und lässt sich hervorragend mit JavaScript (Node.js) kombinieren.
In diesem Artikel werden wir im Detail besprechen, was AWS Lambda ist, wie man seine erste serverless Funktion in JavaScript erstellt und ausführt, und wir werden Best Practices sowie Beispiele für echten Code betrachten. Das Material wird sowohl für Anfänger als auch für erfahrene Entwickler nützlich sein, die die serverless-Entwicklung erlernen möchten.
Was ist AWS Lambda und wie funktioniert es mit Node.js
AWS Lambda ist ein Berechnungsdienst, der Ihren Code als Reaktion auf Ereignisse ausführt und die Rechenressourcen automatisch verwaltet. Sie zahlen nur für die verbrauchte Ausführungszeit (auf 1 ms gerundet) und die Anzahl der Anfragen.
Wichtige Funktionen von AWS Lambda für JavaScript-Entwickler
- Node.js-Unterstützung: AWS Lambda unterstützt offiziell Node.js 14, 16, 18 und 20.
- Automatische Skalierung: Lambda erstellt automatisch Instanzen der Funktion, um jede eingehende Anfrage zu verarbeiten.
- Trigger: Funktionen können per HTTP (über API Gateway), zeitgesteuert (CloudWatch Events), beim Hochladen einer Datei in S3 und auf viele andere Arten aufgerufen werden.
- Einschränkungen: Ausführungszeit bis zu 15 Minuten, Speicher von 128 MB bis 10.240 MB, Paketgröße bis zu 50 MB (komprimiert) oder 250 MB (dekomprimiert).
Für die Arbeit mit Lambda in JavaScript ist keine zusätzliche Konfiguration erforderlich – schreiben Sie einfach einen Handler und laden Sie den Code in AWS hoch.
Erstellen der ersten serverless Funktion in JavaScript
Lassen Sie uns eine einfache serverless Funktion schreiben, die ein JSON mit einem Benutzernamen akzeptiert und eine Begrüßung zurückgibt. Dies ist ein klassisches Beispiel, mit dem man die Bekanntschaft mit AWS Lambda beginnen sollte.
Schritt 1: Grundlegende Struktur des Handlers
Jede Lambda-Funktion in Node.js besteht aus einer exportierten Handler-Funktion, die drei Parameter akzeptiert: event (Ereignis), context (Ausführungskontext) und callback (für die asynchrone Antwort).
// index.jsexports.handler = async (event, context) => { // Logik der Funktion const name = event.name || 'Gast'; return { statusCode: 200, body: JSON.stringify({ message: `Hallo, ${name}! Dies ist deine erste serverless Funktion.` }) };};Schritt 2: Verarbeitung verschiedener Ereignistypen
In realen Projekten können Ereignisse aus verschiedenen Quellen kommen. Betrachten wir ein Beispiel für die Verarbeitung einer Anfrage von API Gateway:
// handler.jsexports.handler = async (event) => { try { // Parsen des Anforderungstexts (falls vorhanden) const body = event.body ? JSON.parse(event.body) : {}; const { userId, action } = body;
// Beispiel für Geschäftslogik const result = { userId: userId || 'unknown', action: action || 'default', timestamp: new Date().toISOString(), message: 'Aktion erfolgreich ausgeführt' };
return { statusCode: 200, headers: { 'Content-Type': 'application/json', 'Access-Control-Allow-Origin': '*' }, body: JSON.stringify(result) }; } catch (error) { return { statusCode: 500, body: JSON.stringify({ error: error.message }) }; }};Arbeit mit externen Diensten und der Umgebung
Serverless Funktionen arbeiten selten isoliert. Meistens müssen sie mit Datenbanken, S3, Dyna