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.