首页 > 解决方案 > AWS SNS 事件在 2 秒内跳过 S3 对象的第二次更新?

问题描述

我有两个 Lambda 从 S3 对象上的 ObjectCreated:* 事件响应关于非 fifo 主题的 SNS 通知。在 2 秒内,S3 对象更新两次。我订阅的 lambda 似乎只响应第一次更新。这是已知的行为吗?似乎只发出了一个事件。

如果更新在一个 SNS 事件中作为两条记录发布,我的应用程序将准备好处理这两个事件。不幸的是,有效载荷中似乎没有第二条记录。

标签: amazon-web-servicesamazon-s3aws-lambdaamazon-sns

解决方案


亚马逊有一个存档的开发人员指南,其中指出:

Amazon S3 事件通知设计为至少传送一次。通常,事件通知会在几秒钟内发送,但有时可能需要一分钟或更长时间。如果同时对一个非版本化对象进行两次写入,则可能只会发送一个事件通知。如果您想确保每次成功写入都会发送事件通知,您可以在存储桶上启用版本控制。使用版本控制,每次成功的写入都会创建对象的新版本,并且还会发送事件通知。

但是,在[新的开源用户指南](2021 年 4 月)中,此注释已被删除。

我认为打开版本控制可能会修复这个错误,但这也会带来额外的成本。

我正在等待支持票上的答案,我保证会用我的最新发现更新这个答案。同时,这应该提供一种解决方法以及一些推理指导。


推荐阅读