Uso de la función Lambda con Amazon Kinesis

AWS KinesisEl servicio se utiliza para capturar / almacenar datos de seguimiento en tiempo real provenientes de clics en sitios web, registros y feeds de redes sociales. Podemos activar AWS Lambda para que realice un procesamiento adicional en estos registros.

Requisitos

Los requisitos básicos para comenzar con Kinesis y AWS Lambda son los siguientes:

  • Crear rol con los permisos necesarios
  • Crear flujo de datos en Kinesis
  • Cree la función AWS Lambda.
  • Agregar código a AWS Lambda
  • Agregar datos al flujo de datos de Kinesis

Ejemplo

Trabajemos en un ejemplo en el que activaremos AWS Lambda para procesar el flujo de datos de Kinesis y enviar correo con los datos recibidos.

A continuación, se muestra un diagrama de bloques simple para explicar el proceso:

Crear rol con los permisos necesarios

Vaya a la consola de AWS y cree un rol.

Crear flujo de datos en Kinesis

Vaya a la consola de AWS y cree un flujo de datos en kinesis.

Hay 4 opciones como se muestra. Trabajaremos en Crear flujo de datos en este ejemplo.

Hacer clic Create data stream. Ingrese el nombre en el nombre del flujo de Kinesis que se indica a continuación.

Ingrese el número de fragmentos para el flujo de datos.

Los detalles de los fragmentos se muestran a continuación:

Ingrese el nombre y haga clic en el Create Kinesis stream botón en la parte inferior.

Tenga en cuenta que la transmisión tarda cierto tiempo en activarse.

Crear función AWS Lambda

Vaya a la consola de AWS y haga clic en Lambda. Cree la función AWS Lambda como se muestra:

Hacer clic Create functionbotón al final de la pantalla. Agregue Kinesis como disparador de AWS Lambda.

Agregue detalles de configuración al desencadenador de Kinesis:

Agregue el disparador y ahora agregue código a AWS Lambda.

Agregar código a AWS Lambda

Para este propósito, usaremos nodejs como tiempo de ejecución. Enviaremos correo una vez que AWS Lambda se active con el flujo de datos de 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");
      }
   });
};

El parámetro de evento tiene los datos ingresados ​​en el flujo de datos de kinesis. El código lambda de AWS anterior se activará una vez que se ingresen los datos en el flujo de datos de kinesis.

Agregar datos a Kinesis Data Stream

Aquí utilizaremos AWS CLI para agregar el flujo de datos de kinesis de datos como se muestra a continuación. Para este propósito, podemos usar el siguiente comando:

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

Luego, AWS Lambda se activa y se envía el correo.