- AWS Lambda 教程
- AWS Lambda - 首页
- AWS Lambda - 概览
- AWS Lambda - 环境设置
- AWS Lambda - 简介
- 构建 Lambda 函数
- NODEJS 中的函数
- Java 中的函数
- Python 中的函数
- Go 中的函数
- C# 中的函数
- 配置 Lambda 函数
- 使用 AWS 控制台创建和部署
- 使用 AWS CLI 创建和部署
- 使用 Serverless Framework 创建和部署
- AWS 执行和调用 Lambda 函数
- 删除 Lambda 函数
- 使用 Amazon API Gateway
- Lambda 函数与 Amazon S3
- Lambda 函数与 Amazon DynamoDB
- Lambda 函数与计划事件
- Lambda 函数与 Amazon SNS
- Lambda 函数与 CloudTrail
- Lambda 函数与 Amazon Kinesis
- Lambda 函数与自定义用户应用程序
- AWS Lambda@Edge 与 CloudFront
- 使用 Cloudwatch 监控和故障排除
- AWS Lambda - 其他示例
- AWS Lambda 有用资源
- AWS Lambda - 快速指南
- AWS Lambda - 有用资源
- AWS Lambda - 讨论
使用 Lambda 函数与 Amazon Kinesis
AWS Kinesis 服务用于捕获/存储来自网站点击、日志、社交媒体 feed 的实时跟踪数据。我们可以触发 AWS Lambda 对这些日志执行额外的处理。
先决条件
开始使用 Kinesis 和 AWS Lambda 的基本要求如下所示:
- 创建具有所需权限的角色
- 在 Kinesis 中创建数据流
- 创建 AWS Lambda 函数。
- 向 AWS Lambda 添加代码
- 向 Kinesis 数据流添加数据
示例
让我们做一个示例,我们将触发 AWS Lambda 处理来自 Kinesis 的数据流并发送包含接收到的数据的邮件。
下面显示了一个用于解释该过程的简单框图:
创建具有所需权限的角色
转到 AWS 控制台并创建角色。
在 Kinesis 中创建数据流
转到 AWS 控制台并在 Kinesis 中创建数据流。
如所示,有 4 个选项。在本例中,我们将使用“创建数据流”。
点击创建数据流。在下面给出的 Kinesis 流名称中输入名称。
输入数据流的分片数量。
分片的详细信息如下所示:
输入名称并点击底部的创建 Kinesis 流按钮。
请注意,流需要一段时间才能变为活动状态。
创建 AWS Lambda 函数
转到 AWS 控制台并点击 Lambda。创建 AWS Lambda 函数,如所示:
点击屏幕末尾的创建函数按钮。将 Kinesis 作为触发器添加到 AWS Lambda。
向 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"
然后,AWS Lambda 被激活并发送邮件。
广告