Sascha Möllering Amazon Web Services EMEA SARL

„Falls Sprachen und Laufzeitumgebungen eingesetzt werden, die von Lambda nicht unterstützt werden, bietet sich das Erzeugen einer eigenen Laufzeitumgebung an.“

AWS Lambda ist ein serverloser Compute Service, der Code als Reaktion auf Ereignisse ausführt und automatisch die zugrunde liegenden Compute-Ressourcen verwaltet. Lambda unterstützt nativ Java, Go, PowerShell, Node.js, C#, Python und Ruby. Vor kurzem wurde eine interessante neue Funktionalität vorgestellt: ein Runtime API, das es ermöglicht, jede andere Programmiersprache im Kontext von Lambda zu nutzen, um eigene Funktionen zu implementieren. Im Folgenden werden wir einen genauen Blick auf AWS Lambda, AWS Lambda Layers und AWS Lambda Custom Runtimes werfen.

Der Service AWS Lambda kann verwendet werden, um eigene Anwendungen zu implementieren oder um AWS-Dienste mit benutzerdefinierter Logik zu erweitern. Ein besonderer Aspekt von AWS Lambda ist, dass dieser Service automatisch Code als Reaktion auf Ereignisse ausführen kann, wie z. B. HTTP-Requests über das Amazon API Gateway, Änderungen an Objekten in Amazon S3 Buckets und Statusübergänge in AWS Step Functions.

Lambda führt Code auf einer hochverfügbaren Compute-Infrastruktur aus und übernimmt dabei vollständig die Verwaltung der Computerressourcen, einschließlich Server- und Betriebssystemwartung, Kapazitätsbereitstellung und automatische Skalierung sowie die Bereitstellung von Code und Sicherheitspatches. Es muss lediglich der eigene Code zu AWS Lambda hochgeladen werden.

Container-Reuse in AWS Lambda

AWS-Lambda-Funktionen werden in einem Container (also in einer Sandbox) ausgeführt, der sie von anderen Funktionen isoliert und die in der Konfiguration der Funktion angegebenen Ressourcen wie beispielsweise Speicher bereitstellt. Wenn eine Funktion zum ersten Mal nach der Erstellung oder Aktualisierung des Codes oder der Ressourcenkonfiguration ausgeführt wird, wird ein neuer Container mit den entsprechenden Ressourcen erstellt, um sie auszuführen, und der Code für die Funktion wird in den Container geladen. Am Beispiel von Node.js kann sehr gut demonstriert werden, wie der Container-Reuse in AWS Lambda funktioniert. Der Initialisierungscode in Node.js wird einmal pro Containererstellung ausgeführt, bevor der Handler zum ersten Mal aufgerufen wird.

Den vollständigen Artikel lesen Sie in der Ausgabe:

Entwickler Magazin Spezial Vol. 21: Serverless - "Serverless"

Alle Infos zum Heft
579903844Laufzeitumgebung in AWS Lambda
X
- Gib Deinen Standort ein -
- or -