Używanie funkcji Lambda z Amazon Kinesis

AWS KinesisUsługa służy do przechwytywania / przechowywania danych śledzenia w czasie rzeczywistym pochodzących z kliknięć w witrynie, dzienników, kanałów mediów społecznościowych. Możemy spowodować, że AWS Lambda wykona dodatkowe przetwarzanie tych logów.

Przybory

Podstawowe wymagania, aby rozpocząć pracę z Kinesis i AWS Lambda, są następujące:

  • Utwórz rolę z wymaganymi uprawnieniami
  • Utwórz strumień danych w Kinesis
  • Utwórz funkcję AWS Lambda.
  • Dodaj kod do AWS Lambda
  • Dodaj dane do strumienia danych Kinesis

Przykład

Popracujmy nad przykładem, w którym uruchomimy AWS Lambda do przetwarzania strumienia danych z Kinesis i wyślemy pocztę z otrzymanymi danymi.

Poniżej przedstawiono prosty schemat blokowy wyjaśniający proces -

Utwórz rolę z wymaganymi uprawnieniami

Przejdź do konsoli AWS i utwórz rolę.

Utwórz strumień danych w kinezie

Przejdź do konsoli AWS i utwórz strumień danych w kinezie.

Jak pokazano, są 4 opcje. W tym przykładzie będziemy pracować nad Utwórz strumień danych.

Kliknij Create data stream. Wpisz nazwę w nazwie strumienia Kinesis podaną poniżej.

Wprowadź liczbę fragmentów dla strumienia danych.

Szczegóły odłamków są pokazane poniżej -

Wprowadź nazwę i kliknij Create Kinesis stream przycisk na dole.

Pamiętaj, że aktywacja strumienia może zająć trochę czasu.

Utwórz funkcję AWS Lambda

Przejdź do konsoli AWS i kliknij Lambda. Utwórz funkcję AWS Lambda, jak pokazano -

Kliknij Create functionna końcu ekranu. Dodaj Kinesis jako wyzwalacz do AWS Lambda.

Dodaj szczegóły konfiguracji do wyzwalacza Kinesis -

Dodaj wyzwalacz, a teraz dodaj kod do AWS Lambda.

Dodawanie kodu do AWS Lambda

W tym celu użyjemy nodejs jako czasu wykonywania. Wyślemy pocztę, gdy AWS Lambda zostanie wyzwolony przez strumień danych z kinezą.

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

Parametr zdarzenia zawiera dane wprowadzone w strumieniu danych kinesis. Powyższy kod lambda aws zostanie aktywowany, gdy dane zostaną wprowadzone w strumieniu danych kinesis.

Dodaj dane do strumienia danych Kinesis

Tutaj użyjemy interfejsu wiersza polecenia AWS, aby dodać strumień danych kinezy danych, jak pokazano poniżej. W tym celu możemy użyć następującego polecenia -

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

Następnie aktywowana jest AWS Lambda i wysyłana jest poczta.