使用 Lambda 函数与 Amazon Kinesis



AWS Kinesis 服务用于捕获/存储来自网站点击、日志、社交媒体 feed 的实时跟踪数据。我们可以触发 AWS Lambda 对这些日志执行额外的处理。

先决条件

开始使用 Kinesis 和 AWS Lambda 的基本要求如下所示:

  • 创建具有所需权限的角色
  • 在 Kinesis 中创建数据流
  • 创建 AWS Lambda 函数。
  • 向 AWS Lambda 添加代码
  • 向 Kinesis 数据流添加数据

示例

让我们做一个示例,我们将触发 AWS Lambda 处理来自 Kinesis 的数据流并发送包含接收到的数据的邮件。

下面显示了一个用于解释该过程的简单框图:

Block Diagram Kinesis

创建具有所需权限的角色

转到 AWS 控制台并创建角色。

Required Permissions

在 Kinesis 中创建数据流

转到 AWS 控制台并在 Kinesis 中创建数据流。

Data Stream

如所示,有 4 个选项。在本例中,我们将使用“创建数据流”。

Create Data Stream

点击创建数据流。在下面给出的 Kinesis 流名称中输入名称。

Create Kinesis Stream

输入数据流的分片数量。

Estimate Number

分片的详细信息如下所示:

Shards

输入名称并点击底部的创建 Kinesis 流按钮。

Kinesis Stream

请注意,流需要一段时间才能变为活动状态。

创建 AWS Lambda 函数

转到 AWS 控制台并点击 Lambda。创建 AWS Lambda 函数,如所示:

Kinesis Lambda

点击屏幕末尾的创建函数按钮。将 Kinesis 作为触发器添加到 AWS Lambda。

Kinesis Trigger

向 Kinesis 触发器添加配置详细信息:

Configure 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: ["xxxxxxx@gmail.com"]
      },
      Message: {
         Body: {
            Text: {
               Data:payload
            }
         },
         Subject: {
            Data: "Kinesis data stream"
         }
      },
      Source: "cxxxxxxxxx@gmail.com"
   };    
   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");
      }
   });
};

event 参数包含在 Kinesis 数据流中输入的数据。一旦在 Kinesis 数据流中输入数据,上述 aws lambda 代码将被激活。

向 Kinesis 数据流添加数据

这里我们将使用 AWS CLI 向 Kinesis 数据流添加数据,如下所示。为此,我们可以使用以下命令:

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

Data Kinesis

然后,AWS Lambda 被激活并发送邮件。

Activate Mail

Kinesis Command Kinesis Mail
广告