AWS Lambda Utilisation de DynamoDB avec Java

AWS Lambda Utilisation de DynamoDB avec Java

1. introduction

AWS Lambda est un service informatique sans serveur fourni par Amazon Web Services etWS DynamoDB est un service de base de données NoSQL également fourni par Amazon.

Fait intéressant, DynamoDB prend en charge à la fois le magasin de documents et le magasin de valeurs-clés et est entièrement géré par AWS.

Avant de commencer, notez que ce tutoriel nécessite un compte AWS valide (vous pouvez créer unhere). C'est également une bonne idée de lire d'abord l'article deAWS Lambda with Java.

2. Dépendances Maven

Pour activer lambda, nous avons besoin de la dépendance suivante qui peut être trouvée surMaven Central:


    com.amazonaws
    aws-lambda-java-core
    1.1.0

Pour utiliser différentes ressources AWS, nous avons besoin de la dépendance suivante qui peut également être trouvée surMaven Central:


    com.amazonaws
    aws-lambda-java-events
    1.3.0

Et pour créer l'application, nous allons utiliser lesMaven Shade Plugin:


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

3. Code Lambda

Il existe différentes manières de créer des gestionnaires dans une application lambda:

  • MethodHandler

  • RequestHandler

  • RequestStreamHandler

Nous utiliserons l'interfaceRequestHandler dans notre application. Nous accepterons lesPersonRequest au format JSON, et la réponse seraPersonResponse également au formatJSON:

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

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

    // standard getters and setters
}

Vient ensuite notre classe de point d'entrée qui implémentera l'interfaceRequestHandler comme:

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);
    }
}

Ici, lorsque nous implémentons l'interfaceRequestHandler, nous devons implémenterhandleRequest() pour le traitement réel de la requête. Pour le reste du code, nous avons:

  • ObjetPersonRequest - qui contiendra les valeurs de requête passées au format JSON

  • ObjetContext - utilisé pour obtenir des informations de l'environnement d'exécution lambda

  • PersonResponse – qui est l'objet de réponse pour la requête lambda

Lors de la création d'un objet DynamoDB, nous allons d'abord créer l'objetAmazonDynamoDBClient et l'utiliser pour créer un objetDynamoDB. Notez que leregion est obligatoire.

Pour ajouter des éléments dans la table DynamoDB, nous utiliserons un objetPutItemSpec - en spécifiant le nombre de colonnes et leurs valeurs.

Nous n'avons besoin d'aucun schéma prédéfini dans la table DynamoDB, nous devons simplement définir le nom de la colonne de clé primaire, qui est“id” dans notre cas.

4. Création du fichier de déploiement

Pour construire l'application lambda, nous devons exécuter la commande Maven suivante:

mvn clean package shade:shade

L'application Lambda sera compilée et empaquetée dans un fichierjar sous le dossier cible.

5. Création de la table DynamoDB

Suivez ces étapes pour créer la table DynamoDB:

  • Connectez-vous àAWS Account

  • Cliquez sur“DynamoDB” qui peuvent être situés sous“All Services”

  • Cette page affiche les tables DynamoDB déjà créées (le cas échéant).

  • Cliquez sur le bouton“Create Table”

  • Fournissez“Table name” et“Primary Key” avec leur type de données en tant que“Number”

  • Cliquez sur le bouton“Create”

  • La table sera créée

6. Création de la fonction Lambda

Suivez ces étapes pour créer la fonction Lambda:

  • Connectez-vous àAWS Account

  • Cliquez sur“Lambda” qui peuvent être situés sous“All Services”

  • Cette page affichera la fonction Lambda déjà créée (le cas échéant) ou aucune fonction lambda n'est créée cliquez sur“Get Started Now”

  • “Select blueprint” → Sélectionnez «Blank Function”

  • “Configure triggers” → Cliquez sur le bouton“Next”

  • «Configurer la fonction»

    • “Name”: SavePerson

    • “Description”: Enregistrer la personne dans DDB

    • “Runtime”: Sélectionnez“Java 8”

    • “Upload”: Cliquez sur le bouton“Upload” et sélectionnez le fichier jar de l'application lambda

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

  • “Role”: Sélectionnez“Create a custom role”

  • Une nouvelle fenêtre apparaîtra et permettra de configurer le rôle IAM pour l'exécution lambda. Nous devons y ajouter les droits DynamoDB. Une fois terminé, cliquez sur le bouton“Allow”

  • Cliquez sur le bouton“Next”

  • “Review”: Vérifiez la configuration

  • Cliquez sur le bouton“Create function”

7. Test de la fonction Lambda

La prochaine étape consiste à tester la fonction lambda:

  • Cliquez sur le bouton“Test”

  • La fenêtre“Input test event” sera affichée. Ici, nous allons fournir l'entrée JSON pour notre demande:

{
  "id": 1,
  "firstName": "John",
  "lastName": "Doe",
  "age": 30,
  "address": "United States"
}
  • Cliquez sur le bouton“Save and test” ou“Save”

  • La sortie peut être vue sur la section“Execution result”:

{
  "message": "Saved Successfully!!!"
}
  • Nous devons également vérifier dans DynamoDB que l'enregistrement est conservé:

    • Aller à“DynamoDB” Management Console

    • Sélectionnez la table“Person”

    • Sélectionnez l'onglet“Items”

    • Ici, vous pouvez voir les détails de la personne qui ont été transmis dans la demande à l'application lambda

  • Donc, la demande est traitée avec succès par notre application lambda

8. Conclusion

Dans cet article rapide, nous avons appris à créer une application Lambda avec DynamoDB et Java 8. Les instructions détaillées devraient vous donner une longueur d’avance pour tout configurer.

Et, comme toujours, le code source complet de l'exemple d'application peut être trouvéover on Github.