AWS Lambda TooManyRequestsException:超出速率

AWS Lambda TooManyRequestsException: Rate Exceeded

尝试执行 Amazon Web Services (AWS) Lambda 函数时(多次)我们看到错误:

AWS Lambda TooManyRequestsException: Rate Exceeded

我们如何解决这个问题?

正如 Michael 所指出的,这是当您到达记录的 default "safety" limit of 100 concurrent invocations:

时您将看到的错误消息

"AWS Lambda has a default safety throttle of 100 concurrent executions per account per region. If you wish to submit a request to increase the throttle of 100 concurrent executions you can visit our Support Center..."

解决方案是打开一个提供以下信息的支持票:

Limit increase request 1 
Service: Lambda 
Region: EU (Ireland) 
Limit name: concurrent requests (average duration * average TPS) 
New limit value: 2000

然后在 ticket/request 的正文中尝试 估计 您的使用模式:

Expected average requests per second: 200 
Expected peak requests per second: 2000 
Expected function duration: 2 seconds 
Function memory size: 1000mb 
Invocation Type: Request-response 
Event Source: Api Gateway & Lambda<->Lambda

可能需要 while 才能从 AWS Support 获得响应,除非您支付 premium support,所以最好加载在 development/staging 期间测试您的应用程序并请求 增加并发调用 在您启动您的应用程序之前 !

在我们的案例中,从最初的支持请求到提高调用限制花费了 45 小时

AWS 支持人员很可爱,只花了 将近两天 !)就达到了服务水平增加,如果我们的发布是 public!

,那将是致命的

我将 Reserve concurrency 设置为低于 100 时遇到了这个问题。并使用 aws-sdk 一次发送超过 100 个请求。

事实上,当预留并发比较低的时候,任何超过你的并发设置的并发请求(比如并发为20时发送21请求)都会被抛出TooManyRequestsException。我不确定是我的帐户问题还是@nelsonic 提到的:默认限制。

但是当我的并发数不低于100时,如果不行,继续增加,问题就解决了。希望这可以帮助。