当文件降落在S3上时,我们一直在使用AWS S3通知来触发lambda函数,并且该模型运行良好,直到我们注意到某些文件被多次处理,从而在数据存储中生成重复项。 我们注意到大约发生了0.05%的文件。
我知道可以通过执行upsert来防止这种情况发生,但是我们担心的是运行不必要的lambda函数的潜在成本,因为这会影响我们的成本。
我搜索过Google和SO,但只发现了类似问题。我们没有超时问题,因为文件已被完全处理。我们的文件很小,最大文件不到40万。即使事件在同一文件上运行,我们也不会两次收到同一事件,因为这些事件具有不同的请求ID。
答案 0 :(得分:2)
在花了很多时间研究S3,SNS和Lambda文档之后,我发现了有关S3通知的注释,内容为:
如果您的应用程序需要特定的语义(例如, 确保没有错过任何事件,或确保操作仅运行一次), 我们建议您在发生以下情况时考虑错过和重复的事件 设计您的应用程序。
https://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html
有效地,这意味着S3通知对我们来说是错误的解决方案,但是考虑到我在此问题上投入的研究时间,我认为我将在这里为其他可能忽略上面链接页面的人提供帮助。< / p>