AmazonKinesisでLambda関数を使用する
AWS Kinesisサービスは、ウェブサイトのクリック、ログ、ソーシャルメディアフィードからのリアルタイムの追跡データをキャプチャ/保存するために使用されます。AWS Lambdaをトリガーして、このログに対して追加の処理を実行できます。
必要条件
KinesisとAWSLambdaを使い始めるための基本的な要件は次のとおりです-
- 必要な権限を持つ役割を作成する
- Kinesisでデータストリームを作成する
- AWSLambda関数を作成します。
- AWSLambdaにコードを追加する
- Kinesisデータストリームにデータを追加する
例
Kinesisからのデータストリームを処理するためにAWSLambdaをトリガーし、受信したデータをメールで送信する例に取り組みましょう。
プロセスを説明するための簡単なブロック図を以下に示します。
必要な権限を持つロールを作成する
AWSコンソールに移動し、ロールを作成します。
Kinesisでデータストリームを作成する
AWSコンソールに移動し、kinesisでデータストリームを作成します。
示されているように4つのオプションがあります。この例では、データストリームの作成に取り組みます。
クリック Create data stream。以下のKinesisストリーム名に名前を入力します。
データストリームのシャードの数を入力します。
シャードの詳細は以下のとおりです。
名前を入力して、 Create Kinesis stream 下部のボタン。
ストリームがアクティブになるまでに一定の時間がかかることに注意してください。
AWSLambda関数を作成する
AWSコンソールに移動し、Lambdaをクリックします。図のようにAWSLambda関数を作成します-
クリック Create function画面の最後にあるボタン。キネシスをトリガーとしてAWSLambdaに追加します。
Kinesisトリガーに設定の詳細を追加します-
トリガーを追加し、AWSLambdaにコードを追加します。
AWSLambdaへのコードの追加
この目的のために、ランタイムとしてnodejsを使用します。AWS Lambdaが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");
}
});
};
イベントパラメータには、kinesisデータストリームに入力されたデータが含まれます。上記のawsラムダコードは、キネシスデータストリームにデータが入力されるとアクティブになります。
Kinesisデータストリームにデータを追加する
ここでは、AWS CLIを使用して、以下に示すようにデータキネシスデータストリームを追加します。この目的のために、次のコマンドを使用できます-
aws kinesis put-record --stream-name kinesisdemo --data "hello world" --
partition-key "789675"
次に、AWS Lambdaがアクティブ化され、メールが送信されます。