【发布时间】:2018-09-07 18:19:06
【问题描述】:
Kinesis Analytics 完成工作后,下一步就是将该信息发送到目的地。 AWS 目前提供 3 个目的地选择:
- 运动流
- Kinesis Firehose 传输流
- AWS Lambda 函数
对于我的用例,Kinesis Firehose 交付流不是我想要的,所以我只剩下:
- 运动流
- AWS Lambda 函数
如果我将目标设置为 Kinesis Stream,然后我会将 Lambda 附加到该流以处理记录。
AWS 还提供了将目标设置为 Lambda 的功能,绕过了此过程的 Kinesis Stream 步骤。在对文档进行一些挖掘时,我发现了这一点:
Using a Lambda Function as Output
特别是在 Lambda 输出调用频率 下的那些文档中,它说:
如果记录作为连续查询或滑动窗口发送到数据分析应用程序内的目标应用程序内流,则 AWS Lambda 目标函数大约每秒调用一次。
我的 Kinesis Analytics 输出符合这种情况。所以我可以假设我的 Lambda 将被调用,“大约每秒一次”。
我试图了解使用这两个目的地与使用 Lambda 的区别。
Using AWS Lambda with Kinesis 声明:
您可以订阅 Lambda 函数以自动从 Kinesis 流中读取成批记录,并在流中检测到记录时对其进行处理。 AWS Lambda 然后定期(每秒一次)轮询流以获取新记录。
所以听起来调用间隔在任何一种情况下都是相同的;大约 1 秒。
所以我认为指导是:
如果管道中的下一阶段只需要一个消费者,则使用 AWS Lambda 函数 目标。但是,如果您需要使用多个不同的消费者对发送到目的地的相同数据执行不同的操作,则 Kinesis Stream 更合适。
这是关于如何选择目的地的正确假设吗?同样,对于我的用例,我排除了 Kinesis Firehose 交付流。
【问题讨论】:
标签: amazon-web-services aws-lambda amazon-kinesis