我有两个Lambda响应来自S3对象上的ObjectCreated:*事件的非先进先出主题的SNS通知。在2秒的间隔内,S3对象被更新两次。我订阅的lambda似乎只对第一次更新做出响应。这是已知的行为吗?似乎只发出了一个事件。
如果更新在一个SNS事件中发布为两个记录,我的应用程序将准备好处理这两个事件。不幸的是,第二条记录似乎在有效负载中不可用。
发布于 2021-09-06 15:33:58
亚马逊有an archived developer’s guide,上面写道:
亚马逊S3事件通知设计为至少发送一次。通常,事件通知在几秒钟内送达,但有时可能需要一分钟或更长时间。如果同时对单个非版本化对象进行两次写入,则可能只会发送单个事件通知。如果您希望确保每次成功写入时都会发送事件通知,则可以在您的存储桶上启用版本控制。使用版本控制,每一次成功的写入都将创建对象的新版本,并发送事件通知。
但是,在the new open source user’s guide中,此注释已被删除。
我认为打开版本控制可能会修复这个错误,但这也会带来额外的成本。
我正在等待支持票上的答案,我承诺会用我的最新发现来更新这个答案。同时,这应该提供了一种变通方法以及一些推理指导。
发布于 2021-09-04 17:27:45
很多AWS系统都有一个最终的一致性模型。在S3更新的情况下,对象具有跨3个可用区的最终一致性。
简而言之,您是在S3实例上的事件触发之前将对象更新到该S3实例之一。
您是否可以在同一有效负载中同时拥有两个事件?
https://stackoverflow.com/questions/69057408
复制相似问题