Utilisation de la fonction Lambda avec Amazon DynamoDB

DynamoDB peut déclencher AWS Lambda lorsque les données sont ajoutées aux tables, mises à jour ou supprimées. Dans ce chapitre, nous travaillerons sur un exemple simple qui ajoutera des éléments à la table DynamoDB et à AWS Lambda qui lira les données et enverra le courrier avec les données ajoutées.

Conditions requises

Pour utiliser Amazon DB et AWS Lambda, nous devons suivre les étapes ci-dessous:

  • Créer une table dans DynamoDB avec la clé primaire

  • Créez un rôle qui aura l'autorisation de travailler avec DynamoDBand AWS Lambda.

  • Créer une fonction dans AWS Lambda

  • AWS Lambda Trigger pour envoyer des e-mails

  • Ajouter des données dans DynamoDB

Laissez-nous discuter de chacune de ces étapes en détail.

Exemple

Nous allons travailler sur l'exemple suivant qui montre l'interaction de base entre DynamoDB et AWS Lambda. Cet exemple vous aidera à comprendre les opérations suivantes -

  • Création d'une table appelée client dans la table Dynamodb et comment saisir des données dans cette table.

  • Déclencher la fonction AWS Lambda une fois les données saisies et envoyer des e-mails à l'aide du service Amazon SES.

Le schéma fonctionnel de base qui explique le déroulement de l'exemple est le suivant:

Créer une table dans DynamoDB avec une clé primaire

Connectez-vous à la console AWS. Accédez aux services AWS et sélectionnez DynamoDB comme indiqué ci-dessous. Sélectionnez DynamoDB.

DynamoDB affiche les options comme indiqué ci-dessous -

Maintenant, cliquez sur Create tablepour créer la table comme indiqué. Nous avons nommé la table commecustomer avec la clé primaire pour cette table comme cust_id. Cliquer surCreate bouton pour ajouter la table à dynamodb.

Le tableau créé est comme indiqué ci-dessous -

Nous pouvons ajouter des éléments à la table créée comme suit -

Cliquez sur Items et cliquez Create item bouton comme indiqué -

Création d'un rôle avec des autorisations pour travailler avec DynamoDB et AWS Lambda

Pour créer un rôle, accédez aux services AWS et cliquez sur IAM.

Créons une stratégie à utiliser uniquement pour la table DynamoDB créée précédemment -

Maintenant, choisissez un Service. Observez que le service que nous avons sélectionné estDynamoDB. PourActions nous avons tout pris Dynamodbactions c'est-à-dire accès à la liste, lecture et écriture. Pourresources, nous sélectionnerons les actions de type de ressource de table. Lorsque vous cliquez dessus, vous pouvez voir un écran comme suit -

Maintenant, sélectionnez table et Add ARNà lui comme indiqué. Nous allons obtenirARN détails de customer table créé comme indiqué ci-dessous -

Entrer arn détails ici -

Cliquez sur Addbouton pour enregistrer les modifications. Une fois faitClick on Review policy. Entrez le nom de la politique, la description, etc. comme indiqué ci-dessous -

Cliquer sur create policypour le sauver. Ajoutez la stratégie au rôle à créer. SélectionnerRole du côté gauche et entrez les détails.

Observez que les politiques ajoutées sont newpolicyfordynamdb, awslambdafullaccess, cloudwatchfullaccess et amazonsesfullaccess. Ajoutez le rôle et l'utilisera lors de la création de la fonction AWS Lambda.

Créer une fonction dans AWS Lambda

Ainsi, nous avons créé une fonction Lambda appelée newlambdafordynamodb comme montré.

Maintenant, ajoutons le déclencheur DynamodDB à AWS Lambda créé. Le runtime que nous utiliserons est Node.js.

Vous pouvez trouver les détails suivants dans le déclencheur Dynamodb à configurer pour AWS Lambda -

Maintenant, cliquez simplement sur Add pour ajouter le déclencheur à AWS Lambda.

Déclencheur AWS Lambda pour envoyer des messages

AWS Lambda sera déclenché lorsque des données sont insérées dans AWS Lambda. Le paramètre d'événement aura les données dynamodb insérées. Cela lira les données de l'événement et enverra un e-mail.

Envoi d'un e-mail

Pour envoyer un e-mail, vous devez suivre les étapes ci-dessous -

Étape 1

Accédez au service AWS et sélectionnez SES (service de messagerie simple). Validez l'e-mail auquel nous devons envoyer un e-mail comme indiqué -

Étape 2

Cliquez sur le bouton Verify a New Email Address pour ajouter l'adresse e-mail.

Étape 3

Saisissez une adresse e-mail pour la vérifier. L'adresse e-mail recevra un e-mail d'activation d'Amazon qui doit être cliqué. Une fois l'activation terminée, l'ID de messagerie est vérifié et peut être utilisé avec les services AWS.

Étape 4

Le code AWS Lambda qui lit les données de l'événement et envoie un e-mail est indiqué ci-dessous:

var aws = require('aws-sdk');
var ses = new aws.SES({
   region: 'us-east-1'
});
exports.handler = function(event, context, callback) {
   console.log(event);
   let tabledetails = JSON.parse(JSON.stringify(event.Records[0].dynamodb));
   console.log(tabledetails.NewImage.address.S);
   let customerid = tabledetails.NewImage.cust_id.S;
   let name = tabledetails.NewImage.name.S;
   let address = tabledetails.NewImage.address.S;
	
   var eParams = {
      Destination: {
         ToAddresses: ["[email protected]"]
      },
      Message: {
         Body: {
            Text: {
               Data: "The data added is as follows:\n CustomerId:"+customerid+"\n Name:"+name+"\nAddress:"+address
            }
         },
         Subject: {
            Data: "Data Inserted in Dynamodb table customer"
         }
      },
      Source: "[email protected]"
   };
   console.log('===SENDING EMAIL===');
   var email = ses.sendEmail(eParams, function(err, data) {
      if (err) console.log(err);
      else {
         console.log("===EMAIL SENT===");
         console.log("EMAIL CODE END");
         console.log('EMAIL: ', email);
         context.succeed(event);
         callback(null, "email is send");
      }
   });
}

Maintenant, enregistrez la fonction Lambda et les données dans la table DynamoDB.

Ajouter des données dans DynamoDB

Utilisez la séquence suivante pour ajouter des données dans DynamoDB.

Étape 1

Aller à la table customer créé dans Dynamodb.

Étape 2

Cliquez sur Create item.

Étape 3

Cliquez sur Save et vérifiez l'ID de messagerie fourni dans AWS Lambda pour voir si le courrier a été envoyé par AWS Lambda.