Aufbau eines serverlosen REST-APIs mit AWS API Gateway und Lambda

Veröffentlicht von Rhein-Ruhr-Informatik am

Einführung

In der modernen Softwareentwicklung sind Geschwindigkeit und Skalierbarkeit entscheidend. Unternehmen wollen Funktionen schnell bereitstellen, ohne sich um die Wartung von Infrastruktur zu kümmern. Genau hier glänzt Serverless Computing.

Mit AWS Lambda und Amazon API Gateway können Entwickler ein voll funktionsfähiges REST API erstellen, ohne Server zu betreiben. AWS kümmert sich automatisch um Skalierung, Verfügbarkeit und Abrechnung – man zahlt nur für tatsächlich verarbeitete Anfragen.

In diesem Artikel zeigen wir, wie man mit AWS API Gateway und AWS Lambda ein einfaches REST API aufsetzt, mit Beispielen in Python.

Was bedeutet Serverless?

Serverless bedeutet nicht, dass keine Server existieren – sie sind nach wie vor vorhanden, werden aber vollständig vom Cloud-Anbieter verwaltet. Entwickler konzentrieren sich nur auf den Code, während AWS folgende Aufgaben übernimmt:

– Bereitstellung und Skalierung (von null bis zu Millionen von Anfragen)
– Hohe Verfügbarkeit
– Sicherheit und Patching
– Abrechnung basierend auf tatsächlicher Nutzung

Für REST APIs hat sich die Kombination aus API Gateway und Lambda als Standardmuster etabliert. Sehen wir uns an, wie das Zusammenspiel funktioniert.

Architekturübersicht

Der Ablauf sieht so aus:
1. Ein Client (Browser, Mobile App, Postman) sendet eine Anfrage an einen API Gateway Endpoint.
2. API Gateway leitet die Anfrage an eine konfigurierte Lambda-Funktion weiter.
3. Die Lambda-Funktion führt den individuellen Code aus (in unserem Fall Python).
4. Lambda gibt eine Antwort zurück, die API Gateway an den Client weiterleitet.

Diese einfache Architektur ist sehr leistungsfähig, da man verschiedene Lambda-Funktionen mit unterschiedlichen API-Routen und Methoden verbinden kann (z. B. GET /users, POST /orders).

Schritt-für-Schritt Anleitung

1. Erstellen einer Lambda-Funktion

1. Melde dich in der AWS Management Console an.
2. Gehe zu AWS Lambda → Funktion erstellen.
3. Wähle Author from scratch, gib einen Namen an (z. B. hello-world) und wähle Python 3.x als Laufzeit.
4. Füge folgenden Code in den Editor ein:

import json

def lambda_handler(event, context):
    name = event.get("queryStringParameters", {}).get("name", "World")
    return {
        "statusCode": 200,
        "headers": {"Content-Type": "application/json"},
        "body": json.dumps({"message": f"Hello, {name}!"})
    }

2. Erstellen eines API Gateways

1. Gehe zu Amazon API Gateway → API erstellen.
2. Wähle HTTP API (einfacher) oder REST API (mehr Konfigurationsmöglichkeiten). Für dieses Beispiel nehmen wir HTTP API.
3. Erstelle ein neues API und verknüpfe es mit deiner Lambda-Funktion (hello-world).
4. Stelle das API bereit (Deploy).

3. Testen des APIs

Nach der Bereitstellung erhältst du eine Endpoint-URL, z. B.:

https://abc123.execute-api.us-east-1.amazonaws.com/default/hello-world

Nun kannst du testen:

curl "https://abc123.execute-api.us-east-1.amazonaws.com/default/hello-world?name=Alice"

Antwort:
{ "message": "Hello, Alice!" }

Glückwunsch! Du hast gerade ein serverloses REST API mit AWS gebaut.

Warum API Gateway + Lambda?

– Skalierbarkeit: Automatische Verarbeitung von Lastspitzen.
– Kosteneffizienz: Man zahlt nur, wenn Funktionen tatsächlich ausgeführt werden.
– Einfachheit: Keine Serververwaltung, keine Updates, keine Skalierungsprobleme.
– Flexibilität: Lambda kann mit Datenbanken (DynamoDB, RDS), Queues (SQS) oder Event-Streams (Kinesis) verbunden werden.

Nächste Schritte

Unser Beispiel ist minimal. In einer Produktionsumgebung könnte man:
– Authentifizierung & Autorisierung hinzufügen (AWS Cognito, IAM Policies, eigene JWTs).
– Infrastructure as Code nutzen (AWS SAM, CDK oder Terraform).
– Logging & Monitoring aktivieren (CloudWatch, X-Ray).
– Lambda mit weiteren AWS-Services kombinieren, um komplexe Anwendungen zu bauen.

Fazit

AWS API Gateway und AWS Lambda ermöglichen es, sehr einfach serverlose REST APIs zu entwickeln. Mit nur wenigen Klicks und einem kleinen Python-Skript lässt sich ein Endpoint bereitstellen, der automatisch skaliert und nur bei Nutzung Kosten verursacht.

Ob du moderne Anwendungen entwickelst, mit Microservices experimentierst oder einfach Servermanagement vermeiden willst – dieser serverlose Ansatz ist ein hervorragender Startpunkt.

de_DEDeutsch