AWS Lambda: Wie Entwickler Funktionen richtig einrichten und konfigurieren

Viele Entwickler verwenden alternativ zu EC2-Instanzen AWS Lambda. Erfahren Sie Schritt für Schritt, wie man eine AWS-Lambda-Funktion einrichtet.

Lambda-Funktionen werden in der Cloud immer beliebter, da viele Entwickler entdeckt haben, dass Serverless-Umgebungen einfacher zu managen sind. AWS Lambda ist dabei ein wertvolles Tool für Entwickler, die bereits mit anderen Cloud-Services von Amazon arbeiten. Die Einrichtung einer AWS-Lambda-Funktion ist allerdings nicht immer einfach.

AWS Lambda ermöglicht es Entwicklern zum Beispiel, Security-Funktionen zu erzeugen. Entwickler können damit beispielsweise sicherstellen, dass ein Amazon Simple Storage Service (S3) schreibgeschützt bleibt. Mit Lambda kann er eine einfache Funktion erzeugen, die jedes Mal eine Benachrichtigung sendet, wenn eine Änderung in S3 stattfindet. In diesem Ratgeber bieten wir eine Schritt-für-Schritt-Anleitung für die Erstellung und Konfiguration einer Lambda-Funktion.

Obwohl Entwickler Lambda-Funktionen programmatisch über die Kommandozeilenschnittstelle erstellen können, ist der einfachste Weg die AWS Management Console. Um mit der Erstellung einer Lambda-Funktion zu beginnen, klickt man in der in der Management Console auf Lambda und anschließend auf Create a Lambda function.

In der folgenden Übersicht wählt man einen der 42 existierenden Blueprints aus. Blueprints sind bereits erzeugte Templates, die eine breite Palette möglicher Lambda-Funktionen abdecken.

Die Anzahl der Templates wird regelmäßig erweitert. Alternativ sind über den Lambda Wizard Templates verfügbar, um mit Amazon S3, Amazon DynamoDB, Amazon Simple Notification Service, Amazon Kinesis und Amazon CloudWatch sowie verschiedenen Drittanbieter-Tools zu interagieren.

Da wir in unserem Beispiel eine Benachrichtigung erzeugen möchten, wählen wir den Blueprint s3-get-object. Dieser lässt sich auch über die Suchleiste finden. Hat man diesen angeklickt, erscheint eine Anzeige für die Konfiguration des S3-Events. Hier wählt man den entsprechenden Storage Bucket und Event Type – also das zu überwachende Ereignis – aus (siehe Abbildung 1). Da wir überwachen wollen, wenn eine Änderung in Amazon S3 stattfindet, wählen wir Object Created (All) und dann Next.

Abbildung 1

Im folgenden Fenster lässt sich eine Programmiersprache für die AWS-Lambda-Funktionen auswählen (siehe Abbildung 2). Verwendet ein Entwickler Node.js oder Python, kann er direkt die Funktion im Wizard bearbeiten. Im Fenster ist bereits ein vordefiniertes Code-Gerüst eingefügt.

Abbildung 2

Wählt man Java aus, muss der Code außerhalb der Konsole geschrieben werden. Die Datei lässt sich dann als ZIP- oder JAR-Datei hochladen. Nutzt ein Entwickler eine JAR-Datei, kann er jede Java Virtual Machine Sprache einsetzen. Somit sind auch Scala, JRuby, Groovy und Clojure in Lambda möglich. In Abbildung 3 ist der jeweilige Code für Python und in Abbildung 4 für Node.js abgebildet. In Node.js erzeugt man eine lambda_handler(); in Python wird ein exports.handler() erstellt; und in Java erzeugt man eine Klasse mit der Signatur:

public String myHandler(int myCount, Context context)

Abbildung 3

In jedem Fall ist das Ergebnis ein Event und ein Kontext. Das Event beschreibt die Aktion, welche die Lambda-Funktion auslöst, während der Kontext die Umgebung ist.

Abbildung 4

Entwickler können außerdem Aktivitäten wie das Wiederherstellen des S3 Bucket aus dem Event heraus ausführen und anschließend Information zur Konsole via Kontext protokollieren. Um den Aufruf einer Funktion abzuschließen, kehrt man von der Funktion zurück – in Java und Python – oder ruft Context.complete in Node.js auf.

Mehr zum Thema AWS Lambda:

Kostenloses E-Handbook: Softwareentwicklung mit Amazon Web Services.

Wie beeinflusst ereignisgesteuertes Computing mit AWS Lambda Softwaretests?

Wann sich AWS Lambda als Alternative für EC2-Instanzen eignet.

Wie setzen sich die Kosten bei AWS Lambda zusammen?

Was ist AWS Lambda und wie kann ein Unternehmen es verwenden?

Die Lambda-Funktion testen und aktivieren

Zu diesem Zeitpunkt würde der Code nichts machen, ließe sich aber auslösen und würde einige Protokollnachrichten schreiben. Man benötigt somit noch ein paar zusätzliche Schritte, bevor der Code etwas sinnvolles in Lambda ausführt.

Einer der wichtigsten Schritte (da schwierig zu debuggen) ist das Auswählen der richtigen IAM-Rolle (Identity and Access Management) für die Funktion. Der Wizard zeigt eine eine Pop-up-Liste sowie einen Vorschlag an, welche IAM-Rolle sich eignet. In diesem Fall schlägt AWS die S3 execution role vor (mit Stern gekennzeichnet, siehe Abbildung 5). Dadurch erhält die AWS-Lambda-Funktion die Genehmigung, S3-Aufrufe auszuführen. Wählt man in diesem Schritt die falsche Rolle aus, ruft das entsprechende Event zwar die Funktion auf, doch das Ergebnis wäre ein Berechtigungsfehler. Im sich öffnenden neuen Tab-Fenster klickt man daher auf Allow.

Abbildung 5

Anmerkung: Hat man vergessen, ein Feld auszufüllen, erscheint ein Hinweis, dass keine neue Funktion erzeugt werden kann. Man sollte also alle Felder überprüfen (erforderliche Felder sind mit einem Stern gekennzeichnet), bevor man auf Next klickt.

Nun kann die Funktion erzeugt werden – entweder aktiviert oder deaktiviert (Haken bei Enable event source setzen, um es zu aktivieren). Es wird aber empfohlen, dass die Funktion am Anfang deaktiviert bleibt, damit man sie erst in der Konsole testet, bevor sie live gestellt wird.

Zur Erinnerung: Ist die Lambda-Funktion live, wird sie ausgeführt – und es entstehen mögliche Kosten – wenn das konfigurierte Event eintritt. Mit ungetestetem Code ist es möglich, den Code massenhaft auszuführen. Die Konsole bietet ein Beispiel-Event-Template, um den Code zu testen. Um dieses Template zu modifizieren, sollte man das entsprechende S3 Bucket spezifizieren und es dann senden (siehe Abbildung 6).

Abbildung 6

Die Testergebnisse werden in der Konsole auf verschiedene Arten angezeigt:

  • Die Konsole zeigt alle Log-Meldungen.
  • Die Konsole zeigt eine Reihe von Metriken über die Aufrufe an, wie zum Beispiel die verstrichene Zeit, die in von AWS abrechenbare Millisekunden übersetzt wird (siehe Abbildung 7).
  • Die Konsole zeigt Graphen mit den Aufrufen (Invocation count) an und bietet einen Überblick der CloudWatch Logs (siehe Abbildung 8).
Abbildung 7

Sobald die AWS-Lambda-Funktion getestet wurde, kann man diese aktivieren und verifizieren, ob diese funktioniert.

Abbildung 8

Für diesen Schritt geht man zur S3-Konsole und lädt eine Datei auf sein spezifisches Bucket hoch. Anschließend sollte die Lambda-Konsole einen Aufruf anzeigen und ein neuer CloudWatch Log wird erstellt.

Folgen Sie SearchEnterpriseSoftware.de auch auf Twitter, Google+ und Facebook!

Erfahren Sie mehr über Softwareentwicklung