Utilizzo della funzione Lambda con Amazon Kinesis

AWS Kinesisviene utilizzato per acquisire / memorizzare dati di tracciamento in tempo reale provenienti da clic del sito Web, log, feed dei social media. Possiamo attivare AWS Lambda per eseguire un'elaborazione aggiuntiva su questi log.

Requisiti

I requisiti di base per iniziare con Kinesis e AWS Lambda sono i seguenti:

  • Crea un ruolo con le autorizzazioni richieste
  • Crea un flusso di dati in Kinesis
  • Crea la funzione AWS Lambda.
  • Aggiungi codice ad AWS Lambda
  • Aggiungi dati al flusso di dati Kinesis

Esempio

Lavoriamo su un esempio in cui attiveremo AWS Lambda per l'elaborazione del flusso di dati da Kinesis e invieremo la posta con i dati ricevuti.

Di seguito è mostrato un semplice diagramma a blocchi per spiegare il processo:

Crea ruolo con autorizzazioni richieste

Vai alla console AWS e crea un ruolo.

Crea flusso di dati in Kinesis

Vai alla console AWS e crea un flusso di dati in kinesis.

Ci sono 4 opzioni come mostrato. Lavoreremo su Crea flusso di dati in questo esempio.

Clic Create data stream. Immettere il nome nel nome del flusso Kinesis fornito di seguito.

Immettere il numero di frammenti per il flusso di dati.

I dettagli dei frammenti sono come mostrato di seguito:

Immettere il nome e fare clic su Create Kinesis stream pulsante in basso.

Tieni presente che è necessario un certo tempo affinché lo streaming diventi attivo.

Crea funzione AWS Lambda

Vai alla console AWS e fai clic su Lambda. Crea la funzione AWS Lambda come mostrato -

Clic Create functionpulsante alla fine dello schermo. Aggiungi Kinesis come trigger ad AWS Lambda.

Aggiungi i dettagli di configurazione al trigger Kinesis -

Aggiungi il trigger e ora aggiungi il codice ad AWS Lambda.

Aggiunta di codice ad AWS Lambda

A questo scopo, useremo nodejs come run-time. Invieremo la posta una volta che AWS Lambda viene attivato con il flusso di dati 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");
      }
   });
};

Il parametro dell'evento contiene i dati immessi nel flusso di dati kinesis. Il codice lambda aws sopra verrà attivato una volta immessi i dati nel flusso di dati kinesis.

Aggiungi dati a Kinesis Data Stream

Qui useremo AWS CLI per aggiungere il flusso di dati di data kinesis come mostrato di seguito. A tale scopo, possiamo utilizzare il seguente comando:

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

Quindi, AWS Lambda viene attivato e la posta viene inviata.