AWS Lambda Verwenden von DynamoDB mit Java

AWS Lambda Verwenden von DynamoDB mit Java

1. Einführung

AWS Lambda ist ein serverloser Computerdienst, der von Amazon Web Services bereitgestellt wird, undWS DynamoDB ist ein NoSQL-Datenbankdienst, der ebenfalls von Amazon bereitgestellt wird.

Interessanterweise unterstützt DynamoDB sowohl den Dokumentenspeicher als auch den Schlüsselwertspeicher und wird vollständig von AWS verwaltet.

Bevor wir beginnen, beachten Sie, dass für dieses Lernprogramm ein gültiges AWS-Konto erforderlich ist (Sie können einhere erstellen). Es ist auch eine gute Idee, zuerst den Artikel vonAWS Lambda with Javazu lesen.

2. Maven-Abhängigkeiten

Um Lambda zu aktivieren, benötigen wir die folgende Abhängigkeit, die vonMaven Central gefunden werden kann:


    com.amazonaws
    aws-lambda-java-core
    1.1.0

Um verschiedene AWS-Ressourcen verwenden zu können, benötigen wir die folgende Abhängigkeit, die auch vonMaven Central zu finden ist:


    com.amazonaws
    aws-lambda-java-events
    1.3.0

Und um die Anwendung zu erstellen, verwenden wirMaven Shade Plugin:


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

3. Lambda-Code

Es gibt verschiedene Möglichkeiten, Handler in einer Lambda-Anwendung zu erstellen:

  • MethodHandler

  • RequestHandler

  • RequestStreamHandler

Wir werden die Schnittstelle vonRequestHandlerin unserer Anwendung verwenden. Wir akzeptieren diePersonRequest im JSON-Format und die Antwort lautetPersonResponse, auch imJSON-Format:

public class PersonRequest {
    private String firstName;
    private String lastName;

    // standard getters and setters
}
public class PersonResponse {
    private String message;

    // standard getters and setters
}

Als nächstes folgt unsere Einstiegspunktklasse, die die Schnittstelle vonRequestHandlerwie folgt implementiert:

public class SavePersonHandler
  implements RequestHandler {

    private DynamoDB dynamoDb;
    private String DYNAMODB_TABLE_NAME = "Person";
    private Regions REGION = Regions.US_WEST_2;

    public PersonResponse handleRequest(
      PersonRequest personRequest, Context context) {

        this.initDynamoDbClient();

        persistData(personRequest);

        PersonResponse personResponse = new PersonResponse();
        personResponse.setMessage("Saved Successfully!!!");
        return personResponse;
    }

    private PutItemOutcome persistData(PersonRequest personRequest)
      throws ConditionalCheckFailedException {
        return this.dynamoDb.getTable(DYNAMODB_TABLE_NAME)
          .putItem(
            new PutItemSpec().withItem(new Item()
              .withString("firstName", personRequest.getFirstName())
              .withString("lastName", personRequest.getLastName());
    }

    private void initDynamoDbClient() {
        AmazonDynamoDBClient client = new AmazonDynamoDBClient();
        client.setRegion(Region.getRegion(REGION));
        this.dynamoDb = new DynamoDB(client);
    }
}

Wenn wir hier dieRequestHandler-Schnittstelle implementieren, müssen wirhandleRequest() für die tatsächliche Verarbeitung der Anforderung implementieren. Für den Rest des Codes haben wir:

  • PersonRequest Objekt - das die im JSON-Format übergebenen Anforderungswerte enthält

  • Context Objekt - wird verwendet, um Informationen aus der Lambda-Ausführungsumgebung abzurufen

  • PersonResponse – ist das Antwortobjekt für die Lambda-Anforderung

Beim Erstellen eines DynamoDB-Objekts erstellen wir zuerst dasAmazonDynamoDBClient-Objekt und erstellen daraus einDynamoDB-Objekt. Beachten Sie, dassregion obligatorisch ist.

Zum Hinzufügen von Elementen zur DynamoDB-Tabelle verwenden wir das ObjektPutItemSpec, indem wir die Anzahl der Spalten und deren Werte angeben.

Wir benötigen kein vordefiniertes Schema in der DynamoDB-Tabelle, sondern müssen nur den Spaltennamen des Primärschlüssels definieren, in unserem Fall“id”.

4. Erstellen der Bereitstellungsdatei

Um die Lambda-Anwendung zu erstellen, müssen wir den folgenden Maven-Befehl ausführen:

mvn clean package shade:shade

Die Lambda-Anwendung wird kompiliert und in einejar-Datei unter dem Zielordner gepackt.

5. Erstellen der DynamoDB-Tabelle

Führen Sie die folgenden Schritte aus, um die DynamoDB-Tabelle zu erstellen:

  • Melden Sie sich beiAWS Account an

  • Klicken Sie auf“DynamoDB”, die sich unter“All Services” befinden

  • Auf dieser Seite werden bereits erstellte DynamoDB-Tabellen (falls vorhanden) angezeigt.

  • Klicken Sie auf die Schaltfläche“Create Table”

  • Geben Sie“Table name” und“Primary Key” mit dem Datentyp“Number” an

  • Klicken Sie auf die Schaltfläche“Create”

  • Tabelle wird erstellt

6. Erstellen der Lambda-Funktion

Befolgen Sie diese Schritte, um die Lambda-Funktion zu erstellen:

  • Melden Sie sich beiAWS Account an

  • Klicken Sie auf“Lambda”, die sich unter“All Services” befinden

  • Diese Seite zeigt bereits erstellte Lambda-Funktionen (falls vorhanden) an oder es werden keine Lambda-Funktionen erstellt. Klicken Sie auf“Get Started Now”

  • “Select blueprint” → Wählen Sie „Blank Function”

  • “Configure triggers” → Klicken Sie auf die Schaltfläche“Next”

  • „Funktion konfigurieren“

    • “Name”: SavePerson

    • “Description”: Person in DDB speichern

    • “Runtime”: Wählen Sie“Java 8”

    • “Upload”: Klicken Sie auf die Schaltfläche“Upload” und wählen Sie die JAR-Datei der Lambda-Anwendung aus

  • “Handler”: com.example.lambda.dynamodb.SavePersonHandler

  • “Role”: Wählen Sie“Create a custom role”

  • In einem neuen Fenster können Sie die IAM-Rolle für die Lambda-Ausführung konfigurieren und die DynamoDB-Berechtigungen hinzufügen. Klicken Sie anschließend auf die Schaltfläche“Allow”

  • Klicken Sie auf die Schaltfläche“Next”

  • “Review”: Überprüfen Sie die Konfiguration

  • Klicken Sie auf die Schaltfläche“Create function”

7. Testen der Lambda-Funktion

Im nächsten Schritt testen Sie die Lambda-Funktion:

  • Klicken Sie auf die Schaltfläche“Test”

  • Das Fenster“Input test event”wird angezeigt. Hier stellen wir die JSON-Eingabe für unsere Anfrage bereit:

{
  "id": 1,
  "firstName": "John",
  "lastName": "Doe",
  "age": 30,
  "address": "United States"
}
  • Klicken Sie auf die Schaltfläche“Save and test” oder“Save”

  • Die Ausgabe ist im Abschnitt“Execution result”zu sehen:

{
  "message": "Saved Successfully!!!"
}
  • Wir müssen auch in DynamoDB überprüfen, ob der Datensatz erhalten bleibt:

    • Gehen Sie zu“DynamoDB” Management Console

    • Wählen Sie die Tabelle“Person” aus

    • Wählen Sie die Registerkarte“Items”

    • Hier sehen Sie die Details der Person, die auf Anfrage an die Lambda-Anwendung übergeben wurden

  • So wird die Anfrage von unserer Lambda-Anwendung erfolgreich bearbeitet

8. Fazit

In diesem kurzen Artikel haben wir gelernt, wie man eine Lambda-Anwendung mit DynamoDB und Java 8 erstellt. Die ausführliche Anleitung soll Ihnen einen Vorsprung bei der Einrichtung geben.

Und wie immer finden Sie den vollständigen Quellcode für die Beispiel-App inover on Github.