Aws-lambda-using-lambda-function-with-amazon-kinesis

提供:Dev Guides
移動先:案内検索

Amazon KinesisでLambda関数を使用する

*AWS Kinesis* サービスは、ウェブサイトのクリック、ログ、ソーシャルメディアフィードからのリアルタイムトラッキングデータをキャプチャ/保存するために使用されます。 AWS Lambdaをトリガーして、このログで追加の処理を実行できます。

必要条件

KinesisとAWS Lambdaを開始するための基本的な要件は次のとおりです-

  • 必要な権限を持つロールを作成します
  • Kinesisでデータストリームを作成する
  • AWS Lambda関数を作成します。
  • AWS Lambdaにコードを追加する
  • Kinesisデータストリームにデータを追加する

Kinesisからのデータストリームを処理するためにAWS Lambdaをトリガーし、受信したデータでメールを送信する例に取り組みましょう。

プロセスを説明するための簡単なブロック図を以下に示します-

ブロック図キネシス

必要な権限を持つロールを作成する

AWSコンソールに移動し、ロールを作成します。

必要な権限

Kinesisでデータストリームを作成する

AWSコンソールに移動し、kinesisでデータストリームを作成します。

データストリーム

示されているように4つのオプションがあります。 この例では、データストリームの作成に取り組みます。

データストリームの作成

[データストリームの作成]をクリックします。 下記のKinesisストリーム名に名前を入力します。

Kinesis Streamの作成

データストリームのシャードの数を入力します。

推定番号

シャードの詳細は以下のとおりです-

シャード

名前を入力し、下部にある[* Kinesisストリームの作成]ボタンをクリックします。

キネシスストリーム

ストリームがアクティブになるには一定の時間がかかることに注意してください。

AWS Lambda関数を作成する

AWSコンソールに移動し、Lambdaをクリックします。 次のようにAWS Lambda関数を作成します-

キネシスラムダ

画面の最後にある[関数の作成]ボタンをクリックします。 AWS LambdaにトリガーとしてKinesisを追加します。

キネシストリガー

Kinesisトリガーに構成の詳細を追加します-

キネシスの構成

トリガーを追加し、AWS Lambdaにコードを追加します。

AWS Lambdaにコードを追加する

この目的のために、ランタイムとして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データストリームにデータが入力されるとアクティブになります。

Kinesis Data Streamにデータを追加する

ここでは、AWS CLIを使用して、以下に示すようにデータキネシスデータストリームを追加します。 この目的のために、次のコマンドを使用できます-

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

Data Kinesis

次に、AWS Lambdaがアクティブ化され、メールが送信されます。

メールのアクティブ化

Kinesis Command Kinesis Mail