AWS API Gateway 限制未按预期工作

Dan*_*iel 5 throttling amazon-web-services aws-lambda aws-api-gateway

我正在尝试启用 API 网关限制,但它没有按预期工作。

我将默认方法限制速率设置为每秒 1 个请求,并将突发设置为 1 个请求。

在此输入图像描述

然后,我在代码中创建了一个循环,向我的 API 端点同时发出 10 个请求。

for (let i=0; i<10; i++) {
    axios.get(url);
}
Run Code Online (Sandbox Code Playgroud)

预期结果是:

  • 1 成功请求
  • 9 个受限制的请求(HTTP 429 错误)

但实际结果却恰恰相反:

  • 9 成功请求
  • 1 个受限制的请求(HTTP 429 错误)

我重复了该过程,但同时发出 20 个请求,结果是:

  • 16 次成功请求
  • 4 个受限制的请求(HTTP 429 错误)

在该 API 方法的 CloudWatch 日志中,我发现了不同的日志流,每个日志流只有几毫秒的差异。

在此输入图像描述

如果我将速率设置为每秒 0 个请求并将突发设置为 0 个请求,则限制将起作用并且所有请求都会受到限制。但是当我将 Rate 和 Bust 设置为 1 时,它无法按预期工作。

为什么会发生这种情况?我需要将 API 限制为每秒仅 1 个请求。

Cas*_*der 1

有两种方法可以对 API 调用应用限制:

\n
    \n
  1. 账户级节流
  2. \n
  3. API级和阶段级节流
  4. \n
\n

当您需要应用 API 级或阶段级限制时,您必须使用使用计划

\n
\n

使用计划指定谁可以访问一个或多个已部署的 API 阶段和方法\xe2\x80\x94,以及他们可以访问它们的数量和速度

\n
\n