AWS Lambda mit Java

1. Einleitung

AWS Lambda ist ein serverloser Computerdienst, der von Amazon bereitgestellt wird, um die Konfiguration von Servern, Betriebssystemen, Skalierbarkeit usw. zu reduzieren. AWS Lambda kann Code in der AWS Cloud ausführen.

Es wird als Reaktion auf Ereignisse in verschiedenen AWS-Ressourcen ausgeführt, wodurch AWS Lambda-Funktionen ausgelöst werden. Die Preisgestaltung erfolgt nach dem Umlageverfahren, was bedeutet, dass wir unser Geld nicht für Lambda-Funktionen im Leerlauf ausgeben.

Für dieses Lernprogramm ist ein gültiges AWS-Konto erforderlich. Sie können hier eine erstellen.

2. Maven-Abhängigkeiten

Um AWS Lambda zu aktivieren, benötigen wir die folgende Abhängigkeit in unserem Projekt:

 com.amazonaws aws-lambda-java-core 1.1.0 

Diese Abhängigkeit finden Sie im Maven-Repository.

Wir benötigen auch das Maven Shade Plugin, um die Lambda-Anwendung zu erstellen:

 org.apache.maven.plugins maven-shade-plugin 2.4.3  false    package  shade    

3. Handler erstellen

Einfach ausgedrückt, um eine Lambda-Funktion aufzurufen, müssen wir einen Handler angeben. Es gibt drei Möglichkeiten, einen Handler zu erstellen:

  1. Erstellen eines benutzerdefinierten MethodHandlers
  2. Implementierung der RequestHandler- Schnittstelle
  3. Implementierung der RequestStreamHandler- Schnittstelle

Lassen Sie uns anhand von Codebeispielen sehen, wie das geht.

3.1. Benutzerdefinierter MethodHandler

Wir erstellen eine Handler-Methode, die als Einstiegspunkt für eingehende Anforderungen dient. Wir können das JSON-Format oder primitive Datentypen als Eingabewerte verwenden.

Mit dem optionalen Context- Objekt können wir auch auf nützliche Informationen zugreifen, die in der Lambda-Ausführungsumgebung verfügbar sind:

public class LambdaMethodHandler { public String handleRequest(String input, Context context) { context.getLogger().log("Input: " + input); return "Hello World - " + input; } }

3.2. RequestHandler- Schnittstelle

Wir können den RequestHandler auch in unsere Klasse implementieren und die handleRequest- Methode überschreiben, die unser Einstiegspunkt für Anforderungen sein wird:

public class LambdaRequestHandler implements RequestHandler { public String handleRequest(String input, Context context) { context.getLogger().log("Input: " + input); return "Hello World - " + input; } }

In diesem Fall ist die Eingabe dieselbe wie im ersten Beispiel.

3.3. RequestStreamHandler- Schnittstelle

Wir können auch RequestStreamHandler in unserer Klasse implementieren und einfach die handleRequest- Methode überschreiben .

Der Unterschied besteht darin, dass InputStream- , ObjectStream- und Context- Objekte als Parameter übergeben werden:

public class LambdaRequestStreamHandler implements RequestStreamHandler { public void handleRequest(InputStream inputStream, OutputStream outputStream, Context context) { String input = IOUtils.toString(inputStream, "UTF-8"); outputStream.write(("Hello World - " + input).getBytes()); } }

4. Erstellen Sie die Bereitstellungsdatei

Wenn alles konfiguriert ist, können wir die Bereitstellungsdatei erstellen, indem wir einfach Folgendes ausführen:

mvn clean package shade:shade

Die jar - Datei wird unter den erstellt werden Zielordner.

5. Erstellen Sie die Lambda-Funktion über die Management Console

Melden Sie sich bei AWS Amazon an und klicken Sie dann unter Dienste auf Lambda. Diese Seite zeigt die Liste der Lambda-Funktionen, die bereits erstellt wurde.

Hier sind die Schritte, die erforderlich sind, um unser Lambda zu erstellen:

  1. "Blaupause auswählen" und dann " Leere Funktion" auswählen
  2. "Trigger konfigurieren" (in unserem Fall haben wir keine Trigger oder Ereignisse)
  3. "Funktion konfigurieren":
    • Name: Geben Sie MethodHandlerLambda an .
    • Beschreibung: Alles, was unsere Lambda-Funktion beschreibt
    • Laufzeit: Wählen Sie java8
    • Codeeintragstyp und Funktionspaket: Wählen Sie „ ZIP- und Jar-Datei hochladen“ und klicken Sie auf die Schaltfläche „ Hochladen“ . Wählen Sie die Datei aus, die Lambda-Code enthält.
    • Unter Lambda-Funktionshandler und Rolle :
      • Handlername: Geben Sie den Namen des Lambda-Funktionshandlers com.baeldung.MethodHandlerLambda :: handleRequest an
      • Rollenname: Wenn andere AWS-Ressourcen in der Lambda-Funktion verwendet werden, stellen Sie den Zugriff bereit, indem Sie eine vorhandene Rolle erstellen / verwenden und auch die Richtlinienvorlage definieren.
    • Unter Erweiterte Einstellungen:
      • Speicher: Stellen Sie Speicher bereit, der von unserer Lambda-Funktion verwendet wird.
      • Zeitüberschreitung: Wählen Sie für jede Anforderung eine Zeit für die Ausführung der Lambda-Funktion aus.
  4. Wenn Sie mit allen Eingaben fertig sind, klicken Sie auf " Weiter" , um die Konfiguration zu überprüfen.
  5. Klicken Sie nach Abschluss einer Überprüfung auf " Funktion erstellen" .

6. Rufen Sie die Funktion auf

Sobald die AWS-Lambda-Funktion erstellt wurde, testen wir sie, indem wir einige Daten übergeben:

  • Klicken Sie in den Listen auf Ihre Lambda-Funktion und dann auf die Schaltfläche „ Test“
  • Ein Popup-Fenster mit einem Dummy-Wert zum Senden von Daten wird angezeigt. Überschreiben Sie die Daten mit "Baeldung"
  • Klicken Sie auf die Schaltfläche " Speichern und testen"

Auf dem Bildschirm sehen Sie den Abschnitt Ausführungsergebnis mit erfolgreich zurückgegebener Ausgabe als:

"Hello World - Baeldung"

7. Fazit

In diesem kurzen Einführungsartikel haben wir eine einfache AWS Lambda-App mit Java 8 erstellt, diese für AWS bereitgestellt und getestet.

Den vollständigen Quellcode für die Beispiel-App finden Sie auf Github.