AWS lambda函数对具有相同时间戳的同一事件多次触发

abh*_*nyu 6 amazon-s3 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

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

Azi*_*ize 6

让我引用一下文档:

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

另一个:

当发生错误时,您的函数可能会被调用多次。重试行为因错误类型、客户端、事件源和调用类型而异。例如,如果您异步调用函数并且它返回错误,则 Lambda 最多会再执行该函数两次。

参考:https://docs.aws.amazon.com/lambda/latest/dg/API_Invoke.html

幂等

您的 lambda 必须是幂等的才能处理此行为,请参阅以下链接的更多详细信息:

https://aws.amazon.com/premiumsupport/knowledge-center/lambda-function-idempot/

https://cloudonaut.io/your-lambda-function-might-execute-twice-deal-with-it/


Vor*_*ung 0

这可能是 Lambda 函数调用的问题,请参阅https://docs.aws.amazon.com/lambda/latest/dg/retries-on-errors.html

因此它是无害的(代码不会运行两次)