限制 API 请求以获得更高的吞吐量 - Amazon API Gateway
Amazon Web Services 文档中描述的 Amazon Web Services 服务或功能可能因区域而异。要查看适用于中国区域的差异,请参阅中国的 Amazon Web Services 服务入门

限制 API 请求以获得更高的吞吐量

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

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

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

作为 API 开发人员,您可以针对各个 API 阶段或方法设置目标限制,以提高账户中所有 API 的整体性能。或者,您可以启用使用计划,根据指定的请求速率和配额设置客户端请求提交的节流。

如何在 API Gateway 中应用限制设置

在为 API 配置限制和配额设置之前,了解 Amazon API Gateway 如何应用这些节流和配额设置很有用。

Amazon API Gateway 提供四种基本类型的限制相关设置:

  • Amazon 节流限制适用于某个区域的所有账户和客户。这些限制设置旨在防止您的 API 和账户因过多请求而不堪重负。这些限制是由 Amazon 设置,且客户无法更改。

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

  • 每个 API、每阶段的节流限制应用于某个阶段的 API 方法级别。您可以为所有方法配置相同的设置,也可以为每种方法配置不同的限制设置。请注意,这些限制不能高于 Amazon 节流限制。

  • 每客户端限制应用于将与使用计划关联的 API 密钥用作客户端标识符的客户端。请注意,这些限制不能高于每个账户限制。

API Gateway 限制相关的设置将按以下顺序应用:

  1. 使用计划中为 API 阶段设置的每个客户端或每个方法限制

  2. 为 API 阶段设置的每个方法的节流限制。

  3. 每个区域的账户级别限制

  4. Amazon 区域节流

每个区域的账户级别限制

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

在使用计划中配置 API 级别限制和阶段级别节流目标

usage plan(使用计划)中,您可以在 Create Usage Plan(创建使用计划)下的 API 或阶段级别为所有方法设置默认的每个方法的节流。

在使用计划中配置方法级别节流目标

您可以在使用计划中的方法级别设置其他目标,如 创建使用计划 中所示。在 API Gateway 控制台中,通过在配置方法限制设置中指定 Resource=<resource>Method=<method> 来设置这些限制。例如,对于 PetStore 示例,您可以指定 Resource=/petsMethod=GET