AWS Lambda mit Java

AWS Lambda Mit Java

1. Einführung

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 AWS Cloud ausführen.

Es wird als Reaktion auf Ereignisse auf 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 einhere erstellen.

2. Maven-Abhängigkeiten

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


    com.amazonaws
    aws-lambda-java-core
    1.1.0

Diese Abhängigkeit kann beiMaven repository gefunden werden.

Wir benötigen auch dieMaven 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 benutzerdefiniertenMethodHandler

  2. Implementierung derRequestHandler-Schnittstelle

  3. Implementierung derRequestStreamHandler-Schnittstelle

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

3.1. BenutzerdefinierteMethodHandler

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 ObjektContextkö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 auch dieRequestHandler in unsere Klasse implementieren und diehandleRequest-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 auchRequestStreamHandler in unserer Klasse implementieren und einfach die MethodehandleRequest überschreiben.

Der Unterschied besteht darin, dassInputStream-,ObjectStream- undContext-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. Bereitstellungsdatei erstellen

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

mvn clean package shade:shade

Die Dateijarwird im Ordnertargeterstellt.

5. Erstellen Sie die Lambda-Funktion über die Verwaltungskonsole

Melden Sie sich beiAWS Amazon an und klicken Sie dann unter services auf Lambda. Auf dieser Seite wird die bereits erstellte Lambda-Funktionsliste angezeigt.

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

  1. “Select blueprint” und wählen Sie dann „Blank Function”

  2. “Configure triggers” (in unserem Fall haben wir keine Auslöser oder Ereignisse)

  3. „Funktion konfigurieren“:

    • Name: Geben SieMethodHandlerLambda an.

    • Beschreibung: Alles, was unsere Lambda-Funktion beschreibt

    • Laufzeit: Wählen Siejava8

    • Codeeingabetyp und Funktionspaket: Wählen Sie „Upload a .ZIP and Jar file” und klicken Sie auf die Schaltfläche„Upload” “. Wählen Sie die Datei aus, die Lambda-Code enthält.

    • UnterLambda function handler and role:

      • Handlername: Geben Sie den Namen des Lambda-Funktionshandlerscom.example.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 die Richtlinienvorlage definieren.

    • UnterAdvanced settings:

      • Speicher: Geben Sie Speicher an, 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 „Next”, um die Konfiguration zu überprüfen.

  5. Klicken Sie nach Abschluss einer Überprüfung auf „Create Function”.

6. Rufen Sie die Funktion auf

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

  • Klicken Sie in Listen auf Ihre Lambda-Funktion und dann auf die Schaltfläche „Test”

  • Es erscheint ein Popup-Fenster, das einen Dummy-Wert zum Senden von Daten enthält. Überschreiben Sie die Daten mit“example”

  • Klicken Sie auf die Schaltfläche „Save and test”

Auf dem Bildschirm sehen Sie den AbschnittExecution result mit erfolgreich zurückgegebener Ausgabe als:

"Hello World - example"

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.

Der vollständige Quellcode für die Beispiel-App befindet sich inover on Github.