您目前查看的是 Apigee Edge 說明文件。
前往 Apigee X 說明文件。 info
結果
用於動態修改目標配額政策允許的剩餘要求數。 您通常會使用這項政策來減少目標配額政策的目前配額計數,而不是等待配額計數重設。
舉例來說,目標配額政策會限制開發人員每週只能提出 1000 個要求。開發人員在當週的第二天就達到這個上限。使用「重設配額」政策,從配額計數器中扣除 500,讓使用者在一週的剩餘時間內再提出 500 個要求。每週結束時,配額政策會重設,開發人員每週可發出 1000 個要求。
如要進一步瞭解配額政策,請參閱配額政策。另請參閱這篇社群貼文,瞭解如何使用「重設配額」政策。
範例
這些政策程式碼範例說明如何重設配額計數器:
重設預設計數器
<ResetQuota name="resetQuota">
<Quota name="MyQuotaPolicy">
<Identifier name="_default">
<Allow>100</Allow>
</Identifier>
</Quota>
</ResetQuota>重設配額政策會使用 <Quota> 標記的 name 屬性,指定目標配額政策。在上述範例中,MyQuotaPolicy 政策是目標。
所有「重設配額」政策都必須使用 <Identifier> 標記,指定要更新的配額政策中的計數器。根據預設,配額政策只有一個計數器,除非配額政策也包含 <Identifier> 標記。在這個範例中,目標配額政策未使用 <Identifier> 標記,因此您將 name 屬性指定為 _default。
<Allow> 元素 會指定用於減少目標政策目前配額計數的值。在本例中,配額計數減少 100,因此目標配額政策可再處理 100 個要求。目標配額政策重設時,這項變更會遭到捨棄。
目標配額政策的定義如下所示:
<Quota name="MyQuotaPolicy"> <Interval>5</Interval> <TimeUnit>hour</TimeUnit> <Allow count="100"/> </Quota>
使用參考資料
<ResetQuota name="resetQuota">
<Quota ref="request.header.quotapolicy">
<Identifier name="_default">
<Allow ref="request.header.allowquota" />
</Identifier>
</Quota>
</ResetQuota>在本例中,您會將目標配額政策的名稱和配額計數變更,以要求標頭的形式傳遞。接著,您可以在「重設配額」政策中參照含有這些值的流程變數。
指定 ID
<ResetQuota name="resetQuota">
<Quota name="QuotaPolicy">
<Identifier ref="request.header.clientId">
<Allow>100</Allow>
</Identifier>
</Quota>
</ResetQuota>如果目標配額政策指定 <Identifier> 標記,您可以為重設配額政策的 <Identifier> 標記指定相同值,藉此更新特定配額計數。請注意,目標配額政策中的 <Identifier> 標記,與重設配額政策中指定的值相符:
<Quota name="QuotaPolicy"> <Identifier ref="request.header.clientId"/> <Interval>5</Interval> <TimeUnit>hour</TimeUnit> <Allow count="100"/> </Quota>
元素參考資料
元素參考資料說明「重設配額」政策的元素和屬性。
<ResetQuota async="false" continueOnError="false" enabled="true" name="Reset-Quota-1">
<DisplayName>Reset Quota 1</DisplayName>
<Quota name="quotaName" ref="request.header.quotapolicy">
<Identifier name="identifierName" ref="request.header.identifier">
<Class ref="request.header.classIdentifier" />
<Allow>100</Allow>
</Identifier>
</Quota>
</ResetQuota><ResetQuota> 屬性
<ResetQuota async="false" continueOnError="false" enabled="true" name="Reset-Quota-1">
下表說明所有政策父項元素的共同屬性:
| 屬性 | 說明 | 預設 | 存在必要性 |
|---|---|---|---|
name |
政策的內部名稱。 視需要使用 |
不適用 | 必填 |
continueOnError |
如果設為「 如果設為 |
false | 選用 |
enabled |
如要強制執行政策,請設為 設為 |
true | 選用 |
async |
此屬性已淘汰。 |
false | 已淘汰 |
<DisplayName>元素
除 name 屬性外,一併使用
管理 UI Proxy 編輯器,使用不同的自然語言名稱。
<DisplayName>Policy Display Name</DisplayName>
| 預設 |
不適用 如果省略這個元素,政策的 |
|---|---|
| 存在必要性 | 選用 |
| 類型 | 字串 |
<Quota> 元素
指出要更新計數器的目標配額政策。
<Quota name="quotaName" ref="request.header.quotapolicy">
<Identifier name="identifierName" ref="request.header.identifier">
<Allow>100</Allow>
</Identifier>
</Quota>| 預設值: | N/A |
| 外觀狀態: | 必填 |
| 類型: | N/A |
屬性
| 屬性 | 說明 | 預設 | 存在必要性 |
|---|---|---|---|
| 名稱 |
指定目標配額政策的名稱。 |
N/A | 選用 |
| ref | 包含目標配額政策名稱的流程變數。如果同時指定 ref 和 name,則 ref 的優先順序較高。如果 ref 無法在執行階段解析,則會使用 name。 | N/A | 選用 |
<Quota>/<Identifier> 元素
如果目標配額政策指定 <Identifier> 標記,則此變數會用於識別計數器。
<Quota name="quotaName">
<Identifier name="identifierName" ref="request.header.identifier">
<Allow>100</Allow>
</Identifier>
</Quota>| 預設值: | N/A |
| 外觀狀態: | 必填 |
| 類型: | 字串 |
屬性
| 屬性 | 說明 | 預設 | 存在必要性 |
|---|---|---|---|
| 名稱 |
指定目標配額政策中的計數 ID 名稱。如果配額政策未使用 <Identifier> 標記,請指定 _default。 |
N/A | 選用 |
| ref |
流程變數,包含目標配額政策中的計數 ID 名稱。如果同時指定 ref 和 name,ref 的優先順序較高。如果 ref 無法在執行階段解析,系統就會使用 name。 |
N/A | 選用 |
<Quota>/<Identifier>/<Allow> 元素
指定要減少配額計數器的數量。您必須指定 <Allow>,否則政策不會修改配額。
<Identifier name="identifierName" ref="request.header.identifier"> <Allow ref="request.header.allowquota">100</Allow> </Identifier>
| 預設值: | N/A |
| 外觀狀態: | 必填 |
| 類型: | 整數 |
屬性
| 屬性 | 說明 | 預設 | 存在必要性 |
|---|---|---|---|
| ref |
流程變數,內含目標配額政策的配額計數變更。 |
N/A | 選用 |
<Quota>/<Identifier>/<Class> 元素
指定要更新配額計數器的類別。如要進一步瞭解如何搭配配額政策使用類別,請參閱配額政策。
<Identifier name="_default">
<Class ref="request.header.classIdentifier">
<Allow>200</Allow>
</Class>
</Identifier>| 預設值: | N/A |
| 外觀狀態: | 選用 |
| 類型: | N/A |
屬性
| 屬性 | 說明 | 預設 | 存在必要性 |
|---|---|---|---|
| ref |
參照包含要更新配額類別的流程變數。 |
N/A | 選用 |
錯誤參考資料
本節說明當這項政策觸發錯誤時,傳回的錯誤代碼和錯誤訊息,以及 Edge 設定的錯誤變數。 如果您正在開發錯誤規則來處理錯誤,請務必瞭解這項資訊。詳情請參閱「政策錯誤須知」和「處理錯誤」。
執行階段錯誤
執行政策時,可能會發生這些錯誤。
| 錯誤代碼 | HTTP 狀態 | 原因 | 修正 |
|---|---|---|---|
policies.resetquota.InvalidRLPolicy |
500 | 重設配額政策的 <Quota> 元素中指定的配額政策未在 API Proxy 中定義,因此不適用於流程。<Quota> 是必要元素,用於識別應透過「重設配額」政策更新的目標配額政策。 |
build |
policies.resetquota.FailedToResolveAllowCountRef |
不適用 | 如果參照的變數含有政策 <Allow> 元素中的允許計數,就無法將參照的變數解析為值。此為必要元素,並指定配額計數器的金額。 |
build |
policies.resetquota.FailedToResolveRLPolicy |
500 | 無法解析 <Quota> 元素中 ref 屬性所參照的變數。 |
build |
部署錯誤
若您部署包含這項政策的 Proxy,就可能會發生這些錯誤。
| 錯誤名稱 | 原因 | 修正 |
|---|---|---|
InvalidCount |
如果重設配額政策的 <Allow> 元素中指定的計數值不是整數,API Proxy 部署就會失敗。 |
build |