API网关中的Lambda VS Kinesis流。

20

背景

我正在学习AWS Kinesis、API网关技术。

我明白,每当请求到达API网关时,我可以将数据转发到一个流中,或者选择触发一个Lambda(它将执行一些处理)。

想法和疑问

所以,我的想法是,如果我可以直接从API网关触发Lambda(请求到达时实时),那么拥有Kinesis流(用于实时数据处理)的优势是什么呢?

我可以删除流,并直接从API网关触发Lambda(甚至为不同的任务创建多个API)。

在这种情况下,有什么想法!

2个回答

21
你使用的解决方案取决于你正在处理的数据以及你想用它做什么。有关数据和场景结果的更多信息可以缩小 AWS 最佳适配的范围。以下是三个选项的简化:
  1. Kinesis Streams 基本上提供了一个时间窗口来访问大量数据。它负责存储该数据足够长的时间,以便您可以挑选相关数据或执行聚合操作。您对数据的分析可以存储在数据库中。当存储所有传入数据都不必要且会成本高昂时,Kinesis Streams 是一个不错的选择。

  2. Kinesis Firehose 为您提供了一个端点,让您将数据发送到 S3、Redshift 或 Elastic Search(或某些组合)。然后,您可以在存储的数据上执行分析。如果您只想让原始数据最终进入数据库以供以后处理,这是一个不错的选择。但是,您需要为该数据的存储付费。如果您只需要数据的子集或分析结果,则会产生成本。

  3. API Gateway 到 Lambda 允许您实时处理数据。Lambda 可以对数据进行任何操作,此解决方案具有最大的灵活性。但是,您必须逐个处理每个请求,而 Kinesis Streams 可以分析一批数据。


1
这取决于客户端访问的频率和Lambda函数的持续时间。
Lambda函数的并发执行次数限制为100。当Lambda被限制时,API Gateway和Kinesis流之间的重试方法不同。
请参见https://docs.aws.amazon.com/lambda/latest/dg/concurrent-executions.html
您可能需要检查请求速率的估计值。
此外,请记住,Kinesis流保证数据按顺序到达分片。

1
默认的并发执行被限制为100以避免高昂的费用或者意外地在无限递归中生成lambda。这是一个安全限制。你所提到的链接使它看起来很容易请求限制增加。我发现亚马逊对大多数你可能需要的限制增加都非常快速和理解。 - Dandalf
3
我相信他们已经将这个限制提高到了1000。来源:你的链接。@shirono.kei - Tom Wojcik

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接