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:
![](https://assets.edu.lat/aws_lambda/images/block_diagram_kinesis.jpg)
Crea ruolo con autorizzazioni richieste
Vai alla console AWS e crea un ruolo.
![](https://assets.edu.lat/aws_lambda/images/required_permissions.jpg)
Crea flusso di dati in Kinesis
Vai alla console AWS e crea un flusso di dati in kinesis.
![](https://assets.edu.lat/aws_lambda/images/data_stream.jpg)
Ci sono 4 opzioni come mostrato. Lavoreremo su Crea flusso di dati in questo esempio.
![](https://assets.edu.lat/aws_lambda/images/create_data_stream.jpg)
Clic Create data stream. Immettere il nome nel nome del flusso Kinesis fornito di seguito.
![](https://assets.edu.lat/aws_lambda/images/create_kinesis_stream.jpg)
Immettere il numero di frammenti per il flusso di dati.
![](https://assets.edu.lat/aws_lambda/images/estimate_number.jpg)
I dettagli dei frammenti sono come mostrato di seguito:
![](https://assets.edu.lat/aws_lambda/images/shards.jpg)
Immettere il nome e fare clic su Create Kinesis stream pulsante in basso.
![](https://assets.edu.lat/aws_lambda/images/kinesis_stream.jpg)
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 -
![](https://assets.edu.lat/aws_lambda/images/kinesis_lambda.jpg)
Clic Create functionpulsante alla fine dello schermo. Aggiungi Kinesis come trigger ad AWS Lambda.
![](https://assets.edu.lat/aws_lambda/images/kinesis_trigger.jpg)
Aggiungi i dettagli di configurazione al trigger Kinesis -
![](https://assets.edu.lat/aws_lambda/images/configure_kinesis.jpg)
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"
![](https://assets.edu.lat/aws_lambda/images/data_kinesis.jpg)
Quindi, AWS Lambda viene attivato e la posta viene inviata.
![](https://assets.edu.lat/aws_lambda/images/activate_mail.jpg)
![](https://assets.edu.lat/aws_lambda/images/kinesis_command.jpg)
![](https://assets.edu.lat/aws_lambda/images/kinesis_mail.jpg)