我设置了AWS工作流程,以便在将文本文件添加到我的S3存储桶时将触发lambda函数,并且通常工作正常-当我将一堆文本文件上传到S3存储桶时,的lambda将同时运行并处理每个文本文件。
但是我的问题是,偶尔有1或2个文件(总共20k左右)没有触发预期的lambda函数。我不知道为什么-当我检查日志时,并不是lambda处理了文件但失败了。日志显示,lambda根本没有被该1或2个文件触发。我不相信它也不会达到1000个并发lambda限制,因为我的函数运行速度更快,峰值约为200 lambda。
我的问题是:这是因为AWS lambda无法保证会100%触发吗?像S3一样,总是有(尽管很小)发生故障的可能性吗?如果没有,我该如何调试和解决此问题?
答案 0 :(得分:2)
您没有提及Lambda执行所需的时间。默认限制为concurrent executions is 1000。如果您上传文件的速度快于使用1000 Lambda处理文件的速度,那么您将需要获得AWS支持并提高限制。
也来自the docs:
Amazon S3事件通知通常在几秒钟内交付事件,但有时可能需要一分钟或更长时间。在极少数情况下,事件可能会丢失。
如果您的应用程序需要特定的语义(例如,确保没有遗漏任何事件,或者操作仅运行一次),我们建议您在设计应用程序时考虑遗漏和重复的事件。您可以使用LIST Objects API或Amazon S3库存报告来审核错过的事件。 LIST Objects API和Amazon S3清单报告最终会受到一致性的约束,并且可能不会反映最近添加或删除的对象。