Igo*_*ski 5 amazon-web-services aws-lambda
我有一个处理来自 S3 的事件的 AWS Lambda 函数。我想在处理之前聚合它们并让 lambda 处理批次。
理想情况下,我希望能够指定批量大小和超时(比如说一个偶数,然后 5 秒内什么也不做,我想发送一个包含 1 个事件的批次)。
是否有使用 Lambda 或其他 AWS 服务的惯用方法?
您可以做以下几件事:
让发布成为发布者的责任,并让发布者为每组对象提供一个事件来处理。如果发布商已经在批量工作,那么这种方法很有效。
如果每个事件的处理步骤比仅仅处理事件要昂贵得多,那么这种方法很有效。通常,这可以采取 {聚合 lambda} -> {处理批处理作业} 的形式,因为 Lambda 不适合非常昂贵的处理。
如果处理成本相当低,并且您希望最大限度地减少 Lambda 调用次数,那么这种方法很有效。触发计划(两次调用之间等待的时间)是通过权衡您愿意等待处理事件的时间和您愿意支付的调用次数来确定的。需要注意的事项: 1. 如果您根本没有收到任何事件,您仍然会调用 Lambda;2. 如果您收到事件的速度快于事件的处理速度,您的队列将越来越大,处理速度也会下降越来越落后。
我认为您可以通过将SQS队列设置为S3通知的目的地来实现批量操作。假设您想要指定批量大小为 20,所有 S3 事件都将发送到 SQS。当您的 SQS 有 20 个项目时,您将创建一个 CloudWatch 规则来触发 Lambda。您的 Lambda 会轮询 SQS 以查找该批次的 20 个项目并对其进行处理。
您还可以设置 SQS 触发器,但它有最大批量大小 10 的限制。
| 归档时间: |
|
| 查看次数: |
1765 次 |
| 最近记录: |