![](/img/trans.png)
[英]AWS API Gateway will I be charged for the request excess the throttling limit?
[英]AWS API Gateway Throttling not working as expected
我正在尝试启用 API 网关节流,但它没有按预期工作。
我将 Default Method Throttling Rate 设置为每秒 1 个请求,并将 Burst 设置为 1 个请求。
然后我在我的代码中创建了一个循环,以同时向我的 API 端点发出 10 个请求。
for (let i=0; i<10; i++) {
axios.get(url);
}
预期结果将是:
但实际结果恰恰相反:
我重复了这个过程,但是同时发出了 20 个请求,结果是:
在这个 API 方法的 CloudWatch 日志中,我发现了不同的日志流,每个日志流只有几毫秒的差异。
如果我将 Rate 设置为每秒 0 个请求,并将 Burst 设置为 0 个请求,则节流工作并且所有请求都得到节流。 但是当我将 Rate 和 Bust 设置为 1 时,它不会按预期工作。
为什么会这样? 我需要将我的 API 限制为每秒 1 个请求。
似乎 AWS API 网关节流对于较小的速率/突发值不是很精确。
我想象 API 网关有多个“实例”在运行,并且 rate 和 burst 的值“最终一致”。
但是我没有找到任何关于那个的文档。
当我发出一个初始请求并在发出其他 99 个请求之前等待 500 毫秒时,结果“不那么不精确”。
例子:
axios.get(url);
setTimeout(function(){
console.log("After 500 ms");
for (let i=0; i<99; i++) {
axios.get(url);
}
}, 500);
结果:
但是,很难获得一致的结果。
有两种方法可以限制 API 呼叫:
当您需要应用 API 级别或阶段级别的节流时,您必须使用使用计划:
使用计划指定谁可以访问一个或多个已部署的 API 阶段和方法——以及他们可以访问它们的数量和速度
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.