Mik*_*gan 5 amazon-s3 amazon-web-services aws-lambda
我将AWS S3事件通知连接到AWS Lambda处理管道。
我找不到有关S3事件通知保证的文档。我可以确定所有S3事件都会触发lambda进程吗?秩序与我无关,只是我的lambda最终被解雇了。
如果没有这样的保证,该如何处理?
Luc*_*iks 11
2020 年更新
这些事件现在至少发生一次:https : //docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html
该页面的相关引用:
Amazon S3 事件通知设计为至少传送一次。通常,事件通知会在几秒钟内发送,但有时可能需要一分钟或更长时间。
原答案
原则上是的。但是,Lambda 具有 99.9% 的 SLA,S3 也具有 99.9% 的正常运行时间 SLA。因此,理论上可能会错过某些事件,但仅限于服务中断时。当 Lambda 函数失败时,它会自动重试最多 3 次。
我使用 S3 作为 Lambda 的“队列”并且从未错过任何消息(数以百万计)。
我认为你无能为力来处理这个问题。使用“无服务器”基础设施的一部分意味着您也失去了一些控制权(但是,我认为 AWS 可以比我自己和一些专用服务器做得更好)。
非常有趣的是,AWS仅通过文档而不是产品将语义从最多一次升级为至少一次。
2020 年之前,此链接如下所示:
Amazon S3 事件通知通常会在几秒钟内传送事件,但有时可能需要一分钟或更长时间。在极少数情况下,事件可能会丢失。如果您的应用程序需要特定的语义(例如,确保不会丢失任何事件,或者操作仅运行一次),我们建议您在设计应用程序时考虑丢失和重复的事件。您可以使用 LIST 对象 API 或 Amazon S3 库存报告审核错过的事件。LIST 对象 API 和 Amazon S3 库存报告受最终一致性的影响,可能不会反映最近添加或删除的对象。
2020年改为至少一次,如下:
Amazon S3 事件通知设计为至少传送一次。通常,事件通知会在几秒钟内传送,但有时可能需要一分钟或更长时间。
根据此PR,2021 年 11 月,它再次降级为仅一次。
默认情况下,Amazon S3 事件通知仅传送一次。大多数时候,事件通知会在几秒钟内发送。但是,有时可能需要一分钟或更长时间才能送达。
2021年12月,我们指出AWS做了向后不兼容的更改,AWS解释说这是文档更改的事件,尽管我不相信。于是AWS很快就把文档改回如下:
Amazon S3 事件通知设计为至少传送一次。通常,事件通知会在几秒钟内发送,但有时可能需要一分钟或更长时间
但AWS支持也告诉我们,它被设计为至少一次,但不保证任何事情。
因此,这不仅令人困惑,而且具有误导性。
| 归档时间: | 
 | 
| 查看次数: | 2449 次 | 
| 最近记录: |