AWS API Gateway: 错误 429 太多请求

18
我正在尝试使用AWS API Gateway和Lambda创建一个后端系统。前几天,我为新的API资源创建了PUT方法,并采用API密钥作为第一个简单的安全步骤。PUT方法会调用AWS上的Lambda函数。然后,我将此API部署到“prod”阶段进行一些测试。
在最初的几天里,一切都像预期的那样正常工作:我使用Postman调用API并收到了所有期望的数据。但是几天前,我开始总是收到429“Too many requests”响应。我创建了一个新的阶段,但没有任何改变:新阶段与相同版本或更新版本的情况下,仍然会收到相同的错误。API没有达到任何限制,因为它们每天只被调用4或5次(在CloudWatch中检查),而不是每秒钟。没有循环,只有单个调用。我认为Lambda方面没有错误,因为如果我在AWS API Gateway控制台中测试API,我不会收到任何错误(而且Lambda在过去工作良好,没有从那个版本开始的新更改)。仅当我使用外部客户端测试我的API(在我的情况下是Postman)时,才会显示错误。
有人能帮忙解决这个问题吗?更新:我刚刚在同一资源上创建了POST方法,具有相同的参数和相同的Lambda。它正在工作。我想知道问题是否与PUT方法有关,还是在2天内我的POST方法也会受到相同的问题影响。
3个回答

6

我曾经也遇到过同样的问题。我删除了部署并重新创建,这在我的情况下起作用了。


在第一次自动化时,我只遇到了这个问题一次。一旦我手动删除了API的资源,自动化重新创建,问题就不再出现了。 - Manohar Reddy Poreddy
5
我发现增加计划限制解决了我的问题。这个月的限制是10000。在测试期间触发了一个递归查询,用完了本月的计划配额。将配额提高到每月15000个请求,使我能够继续测试。 - sidewaiise
我删除了整个 Cloud-Formation 堆栈,并重新创建它以使其正常工作。 - Manav Kataria
3
我的问题是,我在现有 API Gateway 阶段的 Terraform 配置中添加了一个 default_route_settings 块以启用详细日志记录。这将把“默认路由限流”值设置为 0,即使我在配置中没有它们。(它们可能在过去被手动设置,我不确定。)将它们设置为非零值解决了 429 问题。 - acj
我们遇到了与上面的acj相同的问题。如果您正在使用AWS Terraform API网关模块,并决定将logging_level设置为某个值,比如err...debug...,那么terraform plan也会添加限制设置为0的节流限制。请注意,0并不表示“禁用节流”,而是表示限制为0,因此您会发现API阻止了所有请求(似乎是由于您刚刚启用了调试)。 https://github.com/terraform-aws-modules/terraform-aws-apigateway-v2/blob/master/main.tf - undefined

1

这里是与亚马逊API网关相关的错误链接。最后一段提供了关于上述429错误的额外信息。


2
已经看过了,但没有帮助。关于额外的信息,如果您谈论的是“错误重试和指数退避”,我正在尝试手动设置请求之间的秒数、分钟甚至天数。但是仍然没有改变。 - napcoder

-1

我曾经遇到过同样的问题。我在AWS中创建了该案例,然后他们建议我在模板文件中实施此dependsOn修复。参见:Link

对我有用。


你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心中找到有关如何编写良好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接