Utilisation de la fonction Lambda avec Amazon Kinesis

AWS KinesisLe service est utilisé pour capturer / stocker les données de suivi en temps réel provenant des clics sur le site Web, des journaux et des flux de médias sociaux. Nous pouvons déclencher AWS Lambda pour effectuer un traitement supplémentaire sur ces journaux.

Conditions requises

Les exigences de base pour démarrer avec Kinesis et AWS Lambda sont les suivantes:

  • Créer un rôle avec les autorisations requises
  • Créer un flux de données dans Kinesis
  • Créez une fonction AWS Lambda.
  • Ajouter du code à AWS Lambda
  • Ajouter des données au flux de données Kinesis

Exemple

Travaillons sur un exemple dans lequel nous déclencherons AWS Lambda pour traiter le flux de données de Kinesis et envoyer des e-mails avec les données reçues.

Un schéma de principe simple pour expliquer le processus est présenté ci-dessous -

Créer un rôle avec les autorisations requises

Accédez à la console AWS et créez un rôle.

Créer un flux de données dans Kinesis

Accédez à la console AWS et créez un flux de données dans Kinesis.

Il y a 4 options comme indiqué. Nous allons travailler sur Créer un flux de données dans cet exemple.

Cliquez sur Create data stream. Entrez le nom dans le nom de flux Kinesis donné ci-dessous.

Entrez le nombre de fragments pour le flux de données.

Les détails des fragments sont indiqués ci-dessous -

Entrez le nom et cliquez sur le Create Kinesis stream bouton en bas.

Notez qu'il faut un certain temps pour que le flux devienne actif.

Créer une fonction AWS Lambda

Accédez à la console AWS et cliquez sur Lambda. Créez la fonction AWS Lambda comme indiqué -

Cliquez sur Create functionbouton à la fin de l'écran. Ajoutez Kinesis comme déclencheur à AWS Lambda.

Ajouter des détails de configuration au déclencheur Kinesis -

Ajoutez le déclencheur et ajoutez maintenant du code à AWS Lambda.

Ajout de code à AWS Lambda

Pour cela, nous utiliserons nodejs comme run-time. Nous enverrons des e-mails une fois qu'AWS Lambda sera déclenché avec le flux de données Kinesis.

const aws =  require("aws-sdk");
var ses = new aws.SES({
   region: 'us-east-1'
});
exports.handler = function(event, context, callback) {
   let payload = "";
   event.Records.forEach(function(record) {
      // Kinesis data is base64 encoded so decode here
      payload = new Buffer(record.kinesis.data, 'base64').toString('ascii');
      console.log('Decoded payload:', payload);
   });
   var eParams = {
      Destination: {
         ToAddresses: ["[email protected]"]
      },
      Message: {
         Body: {
            Text: {
               Data:payload
            }
         },
         Subject: {
            Data: "Kinesis data stream"
         }
      },
      Source: "[email protected]"
   };    
   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");
      }
   });
};

Le paramètre d'événement contient les données entrées dans le flux de données Kinesis. Le code lambda aws ci-dessus sera activé une fois que les données seront entrées dans le flux de données Kinesis.

Ajouter des données à Kinesis Data Stream

Ici, nous utiliserons l'AWS CLI pour ajouter un flux de données de kinésithérapie comme indiqué ci-dessous. Pour cela, nous pouvons utiliser la commande suivante -

aws kinesis put-record --stream-name kinesisdemo  --data "hello world" --
partition-key "789675"

Ensuite, AWS Lambda est activé et le courrier est envoyé.