Serverless-Funktionen in JavaScript: 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

Einleitung: Was sind Serverless und AWS Lambda?

\n\n

Serverless (serverloses Rechnen) ist ein Cloud-Computing-Modell, bei dem der Entwickler vollständig von der Verwaltung der Serverinfrastruktur abstrahiert wird. Sie schreiben einfach Code, laden ihn in die Cloud hoch, und der Anbieter (AWS, Google Cloud, Azure) führt ihn automatisch als Reaktion auf Ereignisse aus und skaliert die Ressourcen nach Bedarf. Sie zahlen nur für die tatsächliche Ausführungszeit des Codes (und die Anzahl der Anfragen).

\n\n

AWS Lambda ist der führende Serverless-Dienst von Amazon Web Services. Er ermöglicht die Ausführung von Code in verschiedenen Sprachen, darunter JavaScript (Node.js), ohne dass Server bereitgestellt und gewartet werden müssen. Lambda eignet sich ideal für die Verarbeitung von HTTP-Anfragen (über API Gateway), Hintergrundaufgaben, die Verarbeitung von Dateien aus S3, Reaktionen auf Änderungen in der DynamoDB-Datenbank und viele andere Szenarien.

\n\n

In diesem Artikel behandeln wir AWS Lambda mit JavaScript von A bis Z: von der Erstellung der ersten Funktion über ihr Deployment bis hin zu Monitoring und Optimierung.

\n\n

Hauptteil: Erstellung und Verwaltung von Lambda-Funktionen mit Node.js

\n\n

1. Erstellung der ersten Lambda-Funktion

\n\n

Gehen Sie zur AWS Lambda-Konsole und klicken Sie auf "Funktion erstellen". Wählen Sie die Option "Von Grund auf neu". Geben Sie einen Namen an (z. B. my-first-lambda) und wählen Sie die Laufzeitumgebung Node.js 20.x (oder die neueste stabile Version).

\n\n

Die grundlegende Struktur einer Funktion in Node.js sieht wie folgt aus:

\n\n
exports.handler = async (event, context) => {\n    // event - Daten, die an die Funktion übergeben werden (z. B. HTTP-Anfrage)\n    // context - Informationen über die Ausführungsumgebung (z. B. Anfrage-ID)\n\n    console.log('Ereignis empfangen:', JSON.stringify(event, null, 2));\n\n    // Ihre Geschäftslogik\n    const response = {\n        statusCode: 200,\n        body: JSON.stringify({\n            message: 'Hallo von Lambda!',\n            input: event\n        }),\n    };\n\n    return response; // AWS Lambda erwartet die Rückgabe eines Werts\n};\n
\n\n

In diesem einfachen Beispiel nimmt die Funktion ein Ereignis entgegen und gibt eine JSON-Antwort zurück. Wenn die Funktion über API Gateway aufgerufen wird, enthält event die HTTP-Methode, Header, den Anfragetext usw.

\n\n

Wichtig: Verwenden Sie immer async/await für asynchrone Operationen (Datenbankabfragen, API-Aufrufe). Wenn die Funktion nicht asynchron ist, muss sie ein Promise zurückgeben oder einen Callback verwenden.

\n\n

2. Trigger und Integrationen

\n\n

Die Stärke von Lambda entfaltet sich durch Trigger – Ereignisse von anderen AWS-Diensten, die Ihre Funktion auslösen. Betrachten wir drei der beliebtesten Optionen mit JavaScript.

\n\n

2.1. HTTP-Anfragen über API Gateway

\n

Dies ist das häufigste Szenario für die Erstellung von REST-APIs. Sie hängen einen API Gateway-Trigger an Ihre Lambda-Funktion an. In diesem Fall enthält event die Struktur der HTTP-Anfrage. Beispiel für die Verarbeitung:

\n\n
exports.handler = async (event) => {\n    const httpMethod = event.httpMethod;\n    const path = event.path;\n    const queryParams = event.queryStringParameters || {};\n    const body = event.body ? JSON.parse(event.body) : {};\n\n    console.log(`Methode: ${httpMethod}, Pfad: ${path}`);\n\n    if (httpMethod === 'GET' && path === '/hello') {\n        return {\n            statusCode: 200,\n            headers: { 'Content-Type': 'application/json' },\n            body: JSON.stringify({ message: `Hallo, ${queryParams.name || 'Welt'}!` })\n        };\n    }\n\n    return {\n        statusCode: 404,\n        body: JSON.stringify({ error: 'Not Found' })\n    };\n};\n
\n\n

2.2. Verarbeitung von Dateien aus S3

\n

Lambda kann automatisch beim Hochladen oder Löschen von Dateien in einem S3-Bucket ausgelöst werden. Dies ist ideal für die Erstellung von Bildminiaturen, Videokonvertierung oder Datenindizierung.

\n\n
const AWS = require('aws-sdk');\nconst s3 = new AWS.S3();\n\nexports.handler = async (e                

Blogs

Buchempfehlungen