0

我有一个 Lambda,它在 s3 put item 触发器上执行。

现在在 s3 中,任何上传的 lambda 对象都在触发。假设有人在 s3 中上传了 5 个文件,所以每次它都会为 5 个文件执行 lambda ......

有什么方法可以让 lambda 对所有这 5 个文件只触发一次...

我可以在完成 5 次触发器/lambda 执行后进行跟踪吗...由于没有上传文件,lambda 没有执行多少分钟..

任何帮助都会对我有帮助

4

2 回答 2

0

您可能想要添加一个队列来处理在 S3 上处理新文件的请求。

一个相关的可能是 Kinesis 数据流/SQS。如果批处理对您很重要,那么 Kinesis 可能会更好。

如您所述,请求可以由 S3 触发的 lambda 发送,但它只会将请求发送到队列,然后另一个 lambda 将处理它。一种更简单的方法是在将对象放入 S3 的相同代码中发送请求(如果可能)。

通过这种方式,您可以统计发送、处理、等待等请求的数量。

于 2019-04-11T11:00:14.583 回答
0

如果您为对象创建 ( s3:ObjectCreated) 配置了存储桶通知,并且如果您没有指定过滤器或过滤器满足上传的对象,则每次上传的对象都会触发您的 lambda。

要查看调用次数,您可以Invocations在 Cloudwatch 指标中查看 lambda 函数的指标

在此处输入图像描述

于 2019-04-11T10:37:01.647 回答