Serverless Computing, Teil 2: Pro und contra

Seite 3: Exkurs: AWS Lambda

Inhaltsverzeichnis

Mit AWS Lambda lässt sich Anwendungscode als autarke Funktion in der Amazon-Cloud ausführen, ohne dass dafür Infrastruktur in Form von physikalischen, virtuellen oder Anwendungsservern bereitgestellt und verwaltet werden muss. Als Programmiersprachen lassen sich Node.js, Python, C# und Java verwenden.

In der einfachsten Variante kann der Code einer Lambda-Funktion direkt in einer Web-basierten Managementkonsole eingegeben werden. Das gilt allerdings nur für die Programmiersprachen Node.js und Python und ist nicht komfortabel. Java-Funktionen sind, inklusive aller benötigten Libraries, als ZIP- oder JAR-File hochzuladen oder via S3 Bucket – Amazons Cloud-Storage System – zur Verfügung zu stellen.

Neben der Funktion selbst lassen sich in der Managementkonsole alle weiteren zur Ausführung der Funktion notwendigen Informationen konfigurieren. Hierzu zählen unter anderem Umgebungsvariablen, Speicherbedarf, Timouts, Dead Letter Queues und Sicherheitsrollen. Zusätzlich kann angegeben werden, ob die Funktion in der öffentlichen Cloud oder in einer Virtual Privat Cloud (VPC) laufen soll. Alternativ zur Managementkonsole lässt sich die AWS-Befehlszeilen-Schnittstelle verwenden, um so zum Beispiel Schritte via Skript zu automatisieren.

Die Angabe des Speicherbedarfs wirkt sich direkt auf etwaige Kosten aus, da deren Berechnung auf CPU-Sekunden pro GByte Speicher basiert. Je weniger Speicher benötigt wird, desto mehr Rechenzeit bekommt man für das gleiche Geld. Gezählt wird dabei tatsächlich nur die reale Ausführungszeit der Funktionen. Idle-Zeiten schlagen nicht zu Buche. Die ersten 400.000 GBytes pro Monat sind gratis.

Die Skalierung der Lambda-Funktionen erfolgt automatisch, solange das vorgegeben Limit von 200 parallelen Ausführungen nicht erreicht ist. Im Fall einer Überschreitung des Limits greifen Retry-Mechanismen, sodass kein Aufruf verloren geht. Ist abzusehen, dass das vorgesehene Limit nicht ausreicht, kann es auf explizite Anfrage durch den Amazon-Cloud-Support für einzelne Funktionen hochgesetzt werden.

Aufgerufen beziehungsweise angestoßen werden Lambda-Funktionen durch einen externen Trigger in Form eines Request (synchron) oder Events (asynchron). Als Trigger kommen, neben dem AWS API Gateway als Proxy für HTTP-Request, eine ganze Reihe von AWS-Komponenten, wie CloudWatch Logs, DynamoDB, S3 Storage oder Kinesis Streams, in Frage. Selbst die Verwendung von Amazon Echo und den damit verbundenen Alexa Skills ist möglich. Soll eine Lambda-Funktion eine andere anstoßen, lässt sich innerhalb der aufrufenden Funktion ein Custom-Event über Amazons Simple Notification Service (SNS) dafür nutzen.

Das folgende Listing zeigt eine einfache HelloWorld-Lambda-Funktion in Java, die sich synchron über das API Gateway aufrufen lässt:

package de.openknowledge.cloud.lambda;

import com.amazonaws.services.lambda.runtime.Context;

public class HelloWorld {

public String helloWorldHandler(String name, Context context) {
return "Hello" + name;
}
} (ane)