限制发送给 HTTP API 的请求 - Amazon API Gateway
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅 中国的 Amazon Web Services 服务入门 (PDF)

本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。

限制发送给 HTTP API 的请求

您可以为 API 配置节流,以帮助防止它们因请求过多而不堪重负。节流是在尽最大努力的基础上应用的,应被视为目标而不是保证的请求上限。

API Gateway 使用令牌桶算法(其中,一个令牌即一个请求)限制对 API 的请求。具体来说,API Gateway 根据您账户中的所有 API,按区域检查请求提交的速率和突发事件。在令牌桶算法中,突发可以允许这些限制的预定义超出,但在某些情况下,其他因素也可能导致限制超支。

如果请求提交超过稳态请求速率和突增限制,则 API Gateway 将开始限制请求。此时客户可能会收到 429 Too Many Requests 个错误响应。捕获此类异常后,客户端能够以限制速率的方式重新提交失败的请求。

作为 API 开发人员,您可以针对各个 API 阶段或方法设置目标限制,以提高账户中所有 API 的整体性能。

每个区域的账户级别限制

默认情况下,API Gateway 针对每个区域限制 Amazon 账户内所有 API 的每秒稳态请求 (RPS)。它还对于每个区域限制一个 Amazon 账户中所有 API 的突增(即最大存储桶大小)。在 API Gateway 中,突增限制代表 API Gateway 在返回 429 Too Many Requests 错误响应之前可以完成目标的最大并发请求提交数量。有关限制配额的更多信息,请参阅Amazon API Gateway 配额和重要说明

每个账户限制适用于指定区域内账户中的所有 API。客户可以请求我们放宽账户级别的速率限制 —— 如果具有更短的超时和较小的有效负载的 API,则可以提高限制。要请求增加每个区域的账户级别限制,请联系 Amazon Support 中心。有关更多信息,请参阅Amazon API Gateway 配额和重要说明。请注意,这些限制不能高于 Amazon 节流限制。

路由级别限制

您可以设置路由级别限制,用于覆盖 API 中特定阶段或各个路由的账户级别请求限制。原定设置的路由节流限制不能超过账户级别的费率限制。

您可以使用 Amazon CLI 配置路由级限制。以下命令为 API 的指定阶段和路由配置自定义限制。

aws apigatewayv2 update-stage \ --api-id a1b2c3d4 \ --stage-name dev \ --route-settings '{"GET /pets":{"ThrottlingBurstLimit":100,"ThrottlingRateLimit":2000}}'