amazon-web-services - AWS 是否保证我的 lambda 函数会 100% 触发?
问题描述
我设置了我的 AWS 工作流程,以便在将文本文件添加到我的 S3 存储桶时触发我的 lambda 函数,并且通常它工作正常 - 当我将一堆文本文件上传到 S3 存储桶时,一堆 lambda 将同时运行并处理每个文本文件。
但我的问题是,偶尔,1 或 2 个文件(总共 20k 左右)没有按预期触发 lambda 函数。我不知道为什么 - 当我检查日志时,不是文件由 lambda 处理而是失败了。日志显示 lambda 根本没有被那 1 或 2 个文件触发。我不相信它也达到了 1000 个并发 lambda 限制,因为我的函数运行得更快并且峰值在 200 个 lambda 左右。
我的问题是:这是因为 AWS lambda 不保证它会被 100% 触发吗?像 S3 一样,总是有(尽管很小)失败的可能性?如果没有,我该如何调试和解决这个问题?
解决方案
您没有提到 Lambda 需要多长时间才能执行。并发执行的默认限制是 1000。如果您上传文件的速度超过了 1000 个 Lambda 的处理速度,那么您需要联系 AWS 支持并提高您的限制。
同样来自文档:
Amazon S3 事件通知通常会在几秒钟内发送事件,但有时可能需要一分钟或更长时间。在极少数情况下,事件可能会丢失。
如果您的应用程序需要特定的语义(例如,确保不会遗漏任何事件,或者操作只运行一次),我们建议您在设计应用程序时考虑遗漏和重复的事件。您可以使用 LIST Objects API 或 Amazon S3 清单报告来审核错过的事件。LIST Objects API 和 Amazon S3 清单报告受制于最终一致性,可能不会反映最近添加或删除的对象。
推荐阅读
- javascript - 为什么我的 routeValues 变量在我的视图加载和我单击 ASP.NET MVC 中的 Html.ActionLink 之间发生变化?
- python - python-pptx 如何使图例显示系列名称而不是类别名称
- javascript - 单击时展开表格行
- c# - 在 WPF 中显示一系列图像,然后关闭表单
- python - 按帖子评论排名排序的用户列表
- angular - Bazel 构建 - 服务器执行失败
- c# - 部署更新 api 时如何解决错误请求的 400 错误
- sql - 在oracle sql中向现有json添加新的键值对
- android - 安装新应用时资产文件夹未升级
- kubernetes - kube-apiserver pod 停留在 CreateContainerError 状态