我有一个Lambda,它在s3放置项触发器上执行。
现在,在s3中,任何上传的lambda对象都将触发。 假设某人在s3中上传了5个文件,因此每次它将对5个文件执行lambda ...
lambda是否有办法对这5个文件仅触发一次...
在完成5次时间触发器/ lambda执行之后,我可以跟踪吗?由于没有文件上传,lambda没有执行多少分钟。
任何帮助都会对我有帮助
答案 0 :(得分:0)
如果您为创建对象(s3:ObjectCreated
)配置了存储桶通知,并且如果未指定过滤器或过滤器满足上载的对象,则每次为每个上载的对象触发lambda。
要查看调用数量,可以在Cloudwatch指标中查看lambda函数的Invocations
指标
答案 1 :(得分:0)
您可能想添加一个队列,以处理在S3上处理新文件的请求。
一个相关的可能是Kinesis数据流/ SQS。如果分批处理对您很重要,则Kinesis可能会更好。
请求可以由S3触发的lambda发送,如您所描述的,但是只会将请求发送到队列,然后另一个lambda将对其进行处理。一种更简单的方法是使用将对象放入S3的相同代码(如果可能)发送请求。
这样,您可以统计发送,处理,等待等请求的数量。