我想在收集固定数量的数据之后执行具有多个数据的lambda函数。例如,固定量将仅考虑特定量的消息或在特定时间范围内发送的消息。
我想用SQS来解决这个问题,在SQS上编写消息,并使用轮询来检查SQS状态。但是我不喜欢这个解决方案,因为我想在匹配条件时立即触发lambda(例如:从发送的第一条消息开始经过的时间,或者固定数量的消息)
理想情况是发送收集的所有消息,例如,在第一条消息到达后1分钟。
要明确:
此外,我想基于不同的ID并行处理不同的队列
有一种优雅的方式吗?
我已经建立了一个与顺序lambda一起使用的系统,它处理每条消息的所有进程
不幸的是,在AWS Lambda上做这不是一件容易的事(我们有类似的用例)。
SQS或Kinesis数据流作为触发器可能会有所帮助,但有几个限制:
在不同调用之间聚合记录不是一个好主意,因为您永远不知道下一次调用是否会在另一个容器上启动,因此它们会丢失。
Kinesis Firehose可能会有所帮助,因为您可以配置发送新批次的最大批量大小和最大时间范围。您可以将其配置为写入S3存储桶并配置由新创建的文件触发的lambda。
确保如果使用Kinesis数据流作为Kinesis firehose的源,则数据流的每个分片中的数据将单独分批在Firehose中(AWS中未记录)。
你可以通过几种方式实现这一目标。我这样做:
状态机具有以下步骤: