AWS Lambda
Serverless event-driven computing.
AWS Lambda ist ein serverloser, ereignisgesteuerter Computing-Service, der von Amazon Web Services (AWS) bereitgestellt wird. Er ermöglicht es Entwicklern, Code auszuführen, ohne Server bereitstellen oder verwalten zu müssen. Entwickler laden ihren Code als Lambda-Funktionen hoch, und AWS kümmert sich automatisch um die Infrastruktur, die erforderlich ist, um diesen Code mit hoher Verfügbarkeit auszuführen und zu skalieren. Funktionen werden durch verschiedene Ereignisse ausgelöst, wie z. B. Änderungen an Daten in einem Amazon S3-Bucket, Aktualisierungen einer Amazon DynamoDB-Tabelle oder [API Gateway](/de/terms/api-gateway)-Anfragen. Wenn ein Trigger auftritt, führt Lambda die Funktion aus und weist die erforderlichen Computerressourcen zu. Die Abrechnung basiert auf der Anzahl der Anfragen und der Dauer/Speicher, die während der Ausführung verbraucht werden, mit einer großzügigen kostenlosen Stufe. Zu den Hauptmerkmalen gehören automatische Skalierung, zustandslose Ausführungsumgebungen (obwohl Zustände extern verwaltet werden können), Unterstützung für mehrere Programmiersprachen (Node.js, Python, Java, C#, Go, Ruby, PowerShell und benutzerdefinierte Runtimes) und Integration mit einer Vielzahl von AWS-Diensten. Lambda-Funktionen sind typischerweise kurzlebig und für spezifische Aufgaben konzipiert, nicht für langlaufende Anwendungen. Zu den Kompromissen gehören potenzielle Kaltstarts (Latenz, wenn eine Funktion kürzlich nicht aufgerufen wurde), Ausführungszeitbeschränkungen, Einschränkungen bei Speicher und temporärem Speicher sowie Vendor Lock-in im AWS-Ökosystem. Es ist ideal für die Ereignisverarbeitung, Microservices, Datentransformation und Backend-APIs.
graph LR
Center["AWS Lambda"]:::main
Rel_api_gateway["api-gateway"]:::related -.-> Center
click Rel_api_gateway "/terms/api-gateway"
Rel_microservices["microservices"]:::related -.-> Center
click Rel_microservices "/terms/microservices"
Rel_serverless["serverless"]:::related -.-> Center
click Rel_serverless "/terms/serverless"
classDef main fill:#7c3aed,stroke:#8b5cf6,stroke-width:2px,color:white,font-weight:bold,rx:5,ry:5;
classDef pre fill:#0f172a,stroke:#3b82f6,color:#94a3b8,rx:5,ry:5;
classDef child fill:#0f172a,stroke:#10b981,color:#94a3b8,rx:5,ry:5;
classDef related fill:#0f172a,stroke:#8b5cf6,stroke-dasharray: 5 5,color:#94a3b8,rx:5,ry:5;
linkStyle default stroke:#4b5563,stroke-width:2px;
🧠 Wissenstest
🧒 Erkläre es wie einem 5-Jährigen
Stellen Sie sich AWS Lambda wie einen Zauberkoch vor, der nur dann kocht, wenn Sie ein bestimmtes Gericht bestellen (ein Ereignis tritt ein). Sie geben dem Koch das Rezept (Ihren Code), und er kocht es sofort mit den richtigen Werkzeugen und berechnet Ihnen nur die Zeit, die er mit dem Kochen verbringt.
🤓 Expert Deep Dive
AWS Lambda arbeitet mit einem containerbasierten Ausführungsmodell. Wenn eine Funktion aufgerufen wird, stellt Lambda einen Micro-Container bereit, lädt den Funktionscode und führt ihn aus. Bei selten aufgerufenen Funktionen führt dieser Bereitstellungsschritt zu einer Latenz durch 'Kaltstarts'. Nachfolgende Aufrufe innerhalb eines kurzen Zeitraums verwenden den vorhandenen Container wieder ('Warmstart'), was die Latenz erheblich reduziert. Lambda-Funktionen sind von Natur aus zustandslos; jeder erforderliche Zustand muss extern gespeichert werden (z. B. in DynamoDB, S3, RDS). Das Concurrency-Modell ermöglicht die parallele Ausführung mehrerer Instanzen einer Funktion, die von AWS verwaltet werden, um die Nachfrage bis zu den Concurrency-Grenzen des Kontos zu erfüllen. Provisioned Concurrency kann verwendet werden, um Kaltstarts für latenzempfindliche Anwendungen zu mildern, indem eine bestimmte Anzahl von Ausführungsumgebungen warm gehalten wird. Die Sicherheit wird über IAM-Rollen verwaltet, die Funktionen granulare Berechtigungen für den Zugriff auf andere AWS-Ressourcen gewähren. Der Event-Source-Mapping-Mechanismus ermöglicht es Lambda, Event-Quellen (wie Kinesis-Streams) abzufragen und Funktionen mit Batches von Datensätzen aufzurufen. Architektonische Überlegungen umfassen die Optimierung der Speicherzuweisung von Funktionen (die auch die CPU-Zuweisung beeinflusst), die Verwaltung von Abhängigkeiten und das Design für Idempotenz aufgrund möglicher Wiederholungsversuche.