依金鑰設定使用量配額
適用於:開發人員 | 基本 | 標準 | 進階
quota-by-key
原則會以金鑰為單位,強制採用可續訂或有存留期呼叫量與 (或) 頻寬配額。 金鑰可以具有任意字串值,而且通常會使用原則運算式來提供。 可以新增選擇性增量條件,以指定哪些要求應該計入配額。 如果多個原則會使相同的金鑰值遞增,該值址會針對每個要求遞增一次。 超過配額時,呼叫者會收到 403 Forbidden
回應狀態碼,而回應會包含 Retry-After
標頭,其值為以秒為單位的建議重試間隔。
若要瞭解速率限制和配額之間的差異,請參閱速率限制和配額。
注意
在服務平台中重新啟動基礎計算資源時,APIM 可能會在達到配額後持續處理要求一小段時間。
注意
請依照原則陳述式中提供的順序,來設定原則的元素和子元素。 為了協助您設定此原則,入口網站會提供引導式表單型編輯器。 深入了解如何設定或編輯 APIM 原則。
原則陳述式
<quota-by-key calls="number"
bandwidth="kilobytes"
renewal-period="seconds"
increment-condition="condition"
increment-count="number"
counter-key="key value"
first-period-start="date-time" />
屬性
屬性 | 描述 | 是必要欄位 | 預設 |
---|---|---|---|
bandwidth | 在 renewal-period 中指定的時間週期內允許的 KB 總數上限。 不允許使用原則運算式。 |
必須指定 calls 、bandwidth ,或同時指定兩者。 |
N/A |
通話 | 在 renewal-period 中指定的時間週期內允許的呼叫總數上限。 不允許使用原則運算式。 |
必須指定 calls 、bandwidth ,或同時指定兩者。 |
N/A |
counter-key | 要用於 quota policy 的金鑰。 針對每個索引鍵值,會針對原則設定的所有範圍使用單一計數器。 允許使用原則運算式。 |
Yes | N/A |
increment-condition | 此布林運算式指定要求是否應該計入配額 (true )。 允許使用原則運算式。 |
No | N/A |
increment-count | 依每個要求增加的計數器數目。 允許使用原則運算式。 | No | 1 |
renewal-period | 配額重設之後,固定視窗的長度 (以秒為單位)。 每個期間的開頭都是相對於 first-period-start 來計算。 最短期間:300 秒。 當 renewal-period 設定為 0 時,期間會設定為無限。 不允許使用原則運算式。 |
Yes | N/A |
first-period-start | 配額更新期間的開始日期和時間,格式為:yyyy-MM-ddTHH:mm:ssZ ,如 ISO 8601 標準所指定。 不允許使用原則運算式。 |
No | 0001-01-01T00:00:00Z |
使用方式
使用注意事項
如果您不想在其他 API 之間共用總計,則 counter-key
屬性值在 API 管理執行個體中的全部 API 之間必須是唯一的。
範例
<policies>
<inbound>
<base />
<quota-by-key calls="10000" bandwidth="40000" renewal-period="3600"
increment-condition="@(context.Response.StatusCode >= 200 && context.Response.StatusCode < 400)"
counter-key="@(context.Request.IpAddress)" />
</inbound>
<outbound>
<base />
</outbound>
</policies>
如需此原則範例的詳細資訊,請參閱以 Azure API 管理進行進階要求節流。
相關原則
相關內容
如需使用原則的詳細資訊,請參閱:
- 教學課程:轉換及保護 API
- 原則參考,取得原則陳述式及其設定的完整清單
- 原則運算式
- 設定或編輯原則
- 重複使用原則設定
- 原則程式碼片段存放庫 (英文)
- 使用 Microsoft Azure Copilot 撰寫原則