amazon-web-services - AWS lambda函数为具有相同时间戳的同一事件多次触发
问题描述
我使用 PUT 操作将 AWS S3 触发器配置为 lambda 函数。
每 2 分钟上传 100kb 大小的 .txt 文件。
有时 S3 会以相同的事件和时间触发 lambda 两次。
触发器 1:
START RequestId: f32a3353-bd53-48fd-aa49-c09ee9c82a3e 2019-07-30T22:47:05.122Z
触发器 2:
START RequestId: f32a3353-bd53-48fd-aa49-c09ee9c82a3e 2019-07-30T22:47:05.98Z
我怎样才能避免这种情况?
解决方案
让我引用文档:
有时,您的函数可能会多次收到相同的事件,即使没有发生错误。
另一个:
发生错误时,您的函数可能会被多次调用。重试行为因错误类型、客户端、事件源和调用类型而异。例如,如果您异步调用函数并返回错误,则 Lambda 最多会执行该函数两次。
参考:https ://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html
幂等的
您的 lambda 必须是幂等的才能处理此行为,请参阅以下链接的更多详细信息:
https://aws.amazon.com/premiumsupport/knowledge-center/lambda-function-idempotent/
https://cloudonaut.io/your-lambda-function-might-execute-twice-deal-with-it/
推荐阅读
- angularjs - 如何为 anguluarjs 应用程序定义 robots.txt
- symfony - 如何修复 Voter 必须实现 VoterInterface 错误
- python - 如何在 python 3 中编辑 xml 配置文件?
- angular - http-interceptor 等待订阅完成获取数据
- python - 在命令提示符下使用 pip 安装软件包
- eigen - 与 Eigen 的外加
- java - 将更改的剪辑保存到文件中
- php - 如何循环、匹配和替换?
- c# - 我正在尝试做一个增加球与砖碰撞的分数
- django - Django 说“ManyToManyField”没有定义