首页 > 解决方案 > 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

我怎样才能避免这种情况?

标签: amazon-web-servicesamazon-s3aws-lambda

解决方案


让我引用文档:

有时,您的函数可能会多次收到相同的事件,即使没有发生错误。

另一个:

发生错误时,您的函数可能会被多次调用。重试行为因错误类型、客户端、事件源和调用类型而异。例如,如果您异步调用函数并返回错误,则 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/


推荐阅读