使用 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
廣告