我该如何找出是哪个 API 调用导致的 "Rate exceeded" 错误?
上次更新时间:2020 年 3 月 18 日
我在创建、更新或访问 AWS 服务时收到 "Rate exceeded" 错误,但我不知道是哪个 API 调用导致此错误。
解决方法
使用 AWS CloudTrail 创建 CloudTrail 日志表,并运行 Amazon Athena 查询以找出与 "Rate exceeded" 错误相关的 API 调用。然后,按照以下说明排查 AWS API 调用的 "Rate exceeded" 限流错误。
创建并运行 Athena 查询以查找 AWS API 调用
1. 打开 CloudTrail 控制台。
2. 按照说明创建 CloudTrail 跟踪。
3. 按照说明创建 CloudTrail 跟踪表。
4. 打开 Athena 控制台,并选择新建查询选项卡。
5. 复制并粘贴以下示例查询,然后选择运行查询。
注意:使用您的 CloudTrail 表的名称替换 cloudtrail-table-name。
select eventname, errorcode,eventsource,awsregion, useragent,COUNT(*) count
FROM cloudtrail-table-name
where errorcode = 'ThrottlingException'
AND eventtime between '2018-10-14T03:00:08Z' and '2018-10-23T07:15:08Z'
group by errorcode,awsregion, eventsource, useragent, eventname
order by count desc;
6. 在查询输出中,记录与 "ThrottlingException" errorcode 有关的 eventname 和 eventsource 中所列的 API 调用。
排查 AWS API 调用的 "Rate exceeded" 限流错误
"Rate exceeded" 错误可能在不同的限流条件下发生,具体取决于 AWS 服务和 API 调用。请参阅以下关于为您的 API 调用和 AWS 服务排查问题的文档。
- 针对 GetResourceConfigHistory 或 ListDiscoveredResources API 调用,按照说明排查 AWS Config 控制台错误消息。
- 针对 PutMetricData API 调用,见我在 CloudWatch API 中调用 PutMetricData 时如何避免限流?
- 针对与 AWS Auto Scaling 有关的 API 调用,见AWS Auto Scaling 的 API 调用被限制。我该如何避免此问题?
- 针对与 AWS Lambda 函数有关的 API 调用,见如何排查出现 "Rate exceeded" 和 429 "TooManyRequestsException" 错误时的 Lambda 函数限流问题?
- 针对与 AWS Elastic Beanstalk 有关的 API 调用,见如何解决 Elastic Beanstalk 中的 API 限制或 "Rate Exceeded" 错误?
- 您也可以添加 wait 语句,以便在发生限流问题后允许 AWS API 调用进行重新尝试。有关更多信息,见 AWS 中的错误重试和指数退避。