Lambda İşlevini Amazon Kinesis ile Kullanma
AWS Kinesishizmeti, web sitesi tıklamalarından, günlüklerden, sosyal medya beslemelerinden gelen gerçek zamanlı izleme verilerini yakalamak / depolamak için kullanılır. Bu günlüklerde ek işlemler gerçekleştirmek için AWS Lambda'yı tetikleyebiliriz.
Gereksinimler
Kinesis ve AWS Lambda'yı kullanmaya başlamak için temel gereksinimler aşağıda gösterildiği gibidir -
- Gerekli izinlere sahip rol oluşturun
- Kinesis'te veri akışı oluşturun
- AWS Lambda işlevi oluşturun.
- AWS Lambda'ya kod ekleyin
- Kinesis veri akışına veri ekleyin
Misal
Kinesis'ten veri akışını işlemek için AWS Lambda'yı tetikleyeceğimiz ve alınan verilerle posta göndereceğimiz bir örnek üzerinde çalışalım.
Süreci açıklamak için basit bir blok diyagram aşağıda gösterilmiştir -
Gerekli İzinlere Sahip Rol Oluşturun
AWS konsoluna gidin ve bir rol oluşturun.
Kinesis'te Veri Akışı Oluşturun
AWS konsoluna gidin ve kinesis'te veri akışı oluşturun.
Gösterildiği gibi 4 seçenek vardır. Bu örnekte Create data stream üzerinde çalışacağız.
Tıklayın Create data stream. Adı aşağıda verilen Kinesis akış adına girin.
Veri akışı için parça sayısını girin.
Kırıkların ayrıntıları aşağıda gösterildiği gibidir -
Adı girin ve tıklayın Create Kinesis stream alttaki düğme.
Akışın aktif hale gelmesinin belirli bir zaman aldığını unutmayın.
AWS Lambda İşlevi Oluşturun
AWS konsoluna gidin ve Lambda'ya tıklayın. AWS Lambda işlevini gösterildiği gibi oluşturun -
Tıklayın Create functionEkranın sonundaki düğmesine basın. Kinesis'i AWS Lambda'ya tetikleyici olarak ekleyin.
Kinesis tetikleyicisine yapılandırma ayrıntılarını ekleyin -
Tetikleyiciyi ekleyin ve şimdi AWS Lambda'ya kod ekleyin.
AWS Lambda'ya Kod Ekleme
Bu amaçla, nodejs'yi çalışma zamanı olarak kullanacağız. AWS Lambda, kinesis veri akışıyla tetiklendiğinde posta göndereceğiz.
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");
}
});
};
Olay parametresi, kinesis veri akışına girilen verilere sahiptir. Kinesis veri akışına veri girildiğinde yukarıdaki aws lambda kodu etkinleştirilecektir.
Kinesis Veri Akışına Veri Ekleme
Burada, aşağıda gösterildiği gibi veri kinesis veri akışı eklemek için AWS CLI kullanacağız. Bu amaçla aşağıdaki komutu kullanabiliriz -
aws kinesis put-record --stream-name kinesisdemo --data "hello world" --
partition-key "789675"
Ardından AWS Lambda etkinleştirilir ve posta gönderilir.