[英]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.