背景
我正在研究AWS kinesis,API网关。
据我所知,每当请求访问API网关时,我都可以将数据转发到流中,或者我可以选择触发lambda(将进行一些处理)。
思考与质询
所以,我的想法是,如果我可以直接从API网关触发lambda(当请求到达时,它是实时的),有一个kinesis流(用于实时数据处理)的优势是什么?
我可以删除流并直接从API网关触发lambda(甚至为不同的任务创建多个API)
在这种情况下的任何想法!
答案 0 :(得分:9)
您使用的解决方案实际上取决于您正在处理的数据以及您希望使用的数据。有关您的方案的数据和结果的更多信息可以缩小AWS的合适范围。这是3个选项的简化:
Kinesis Streams基本上为大量数据提供时移窗口。它负责存储足够长的数据,因此您可以选择相关数据或执行聚合。您对数据的分析可以存储在数据库中。当存储所有数据时,Kinesis Streams是一个不错的选择,并且成本很高。
Kinesis Firehose为您提供了一个端点,您可以将数据发送到S3,Redshift或Elastic Search(或某些组合)。然后,您可以对存储的数据执行分析。如果您只是希望原始数据最终存储在数据库中以供以后处理,那么这是一个不错的选择。但是,您需要为该数据的存储付费。如果您只需要数据的子集或分析结果,则成本很高。
Lambda的API网关允许您实时处理数据。 lambda可以对数据执行任何操作,您可以使用此解决方案获得最大的灵活性。但您必须单独处理每个请求,而Kinesis Streams允许您分析一批数据。
答案 1 :(得分:1)
这取决于客户端访问的频率和lambda函数的时间长度。
lambda函数的并发执行次数限制为100.当lambda被限制时,API Gateway和Kinesis流之间的重试方法不同。
请参阅https://docs.aws.amazon.com/lambda/latest/dg/concurrent-executions.html。
您可能需要检查请求率的估算值。
此外,请记住,Kinesis流可以保证数据到达分片的顺序。