如何防止重复的 Lambda 函数调用?

上次更新日期:2021 年 11 月 18 日

我的 AWS Lambda 函数不断收到针对单一事件的多个调用请求。如何防止我的 Lambda 函数从同一事件中多次调用?

简短描述

为了防止重复调用 Lambda 函数,请根据您使用的调用类型执行以下操作。

注意:对于同步调用,调用 Lambda 函数的客户端和 AWS 服务负责执行重试。对于异步调用,Lambda 会在出错时自动重试,并且两次重试之间会有延迟。

解决方案

对于异步调用

查看您的 Lambda 函数的 Amazon CloudWatch Logs 以验证以下内容:

  • 重复的调用是否具有相同的请求 ID
  • 如果重复的调用返回错误或超时

根据您的使用案例,执行以下操作之一:

对于返回错误或超时且具有相同请求 ID 的重复调用

注意:返回错误或超时且具有相同请求 ID 的重复调用表示 Lambda 服务重试该函数。

为异步调用配置错误处理,以减少 Lambda 函数重试失败的异步调用请求次数。

有关更多信息,请参阅 AWS Lambda 中的错误处理和自动重试

对于没有返回错误或超时的重复调用

注意:未返回错误或超时的重复调用表示客户端重试。

对于同步调用

注意:根据每项服务的事件源映射,同步调用重试行为因 AWS 服务而异。有关更多信息,请参阅事件驱动的调用