本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
速率限制維度
維度鍵決定閘道如何將流量分組到速率限制儲存貯體。每個維度索引鍵參考來自請求內容的值。閘道會在執行時間解析這些值,以尋找相符的速率限制項目。
支援的維度
| 維度鍵 | 說明 | 範例值 |
|---|---|---|
|
|
要叫用的目標名稱。從請求路徑解析。 |
|
|
|
正在調用之工具的完整名稱,格式為 |
|
|
|
推論目標的完整模型識別符。 |
|
|
|
從發起人的 JWT 字符中擷取的宣告。將 取代 |
|
|
|
發起人的 IAM 主體 ARN。 |
|
|
|
發起人擔任角色時所設定的來源身分。 |
|
預設值 (*)
速率限制項目支援特殊值*做為維度的截獲預設值。
-
具有
*的維度項目表示「將此速率套用至此維度的所有值」。 -
如果實際值有更具體的項目,則以特定項目為優先 (最具體的配對獲勝)。
-
*會建立獨立的每個實體儲存貯體 — 符合的每個不同值都會以設定的速率取得自己的速率儲存貯體。
多維度速率限制的追蹤限定條件:
當速率限制具有多個維度索引鍵時, 只能顯示在結尾位置。如果您在位置 N 使用 ,所有後續位置也必須是 *。
例如,使用 dimensionKeys: ["targetName", "toolName", "$.context.jwt.sub"]:
| 項目維度 | 有效 | 為什麼 |
|---|---|---|
|
|
是 |
所有位置都是特定的值。 |
|
|
是 |
只有最後一個位置是 |
|
|
是 |
追蹤位置為 |
|
|
是 |
所有位置都是 |
|
|
否 |
|
|
|
否 |
|
|
|
否 |
|
比對的運作方式:
當請求送達時,閘道會解析實際維度值,並尋找最具體的相符項目。例如,如果解析的值為 ["target1", "readData", "alice"],閘道會依下列順序檢查項目:
-
["target1", "readData", "alice"]— 完全相符 (最具體) -
["target1", "readData", "*"]— 最後一個維度使用預設值 -
["target1", "*", "*"]— 最後兩個維度使用預設值 -
["*", "*", "*"]— 完全預設 (最低特定)
第一個配對獲勝。
提示
針對已知的高價值或受限實體使用特定項目,並將*項目作為其他項目的預設費率方案。
維度解析度行為
當閘道評估速率限制時,它會從請求內容解析每個維度索引鍵:
-
如果維度索引鍵無法從請求中解析 (例如,
toolName對於非工具請求或不存在的 JWT 宣告),閘道會完全略過該速率限制。請求不受該速率限制限流。 -
只有經過驗證的內容才會用於解析。JWT 宣告會從已由閘道身分驗證組態驗證的字符中擷取。IAM 內容僅適用於 SigV4-authenticated請求。
共用與個別限制
維度索引鍵和項目值的組合會決定流量是共用單一速率儲存貯體,還是每個實體都會取得自己的獨立儲存貯體。
| dimensionKeys | 項目維度 | Behavior (行為) |
|---|---|---|
|
|
|
|
|
|
|
每個目標都會以此速率取得自己的獨立儲存貯體 (每個實體)。 |
|
|
|
每個唯一發起人都會取得自己的儲存貯體 (每個發起人個別限制)。 |
|
|
|
每個呼叫者都會取得自己的儲存貯體,範圍為 |
|
|
|
每個唯一的target-and-caller組合都會取得自己的儲存貯體。 |
警告
避免使用高基數或未限制的 JWT 宣告做為維度索引鍵 (例如 $.context.jwt.jti、 $.context.jwt.nonce或 請求 IDs)。這些會建立無限制的速率儲存貯體數量,這可能會降低速率限制的有效性。請tier改用穩定的邊界識別符,例如 sub、 team或 。