概要
ターゲットの Quota ポリシーで許可されている残りのリクエスト数を動的に変更します。このポリシーは通常、割り当てカウントのリセットを待たずに、ターゲットの Quota ポリシーの現在の割り当てカウントを減らす場合に使用します。
たとえば、ターゲットの Quota ポリシーで 1 週間のリクエスト数が 1,000 件に制限されているときに、週の 2 日目に、デベロッパーがこの上限に達したとします。Reset Quota ポリシーを使用して、割り当てカウンタから 500 を引き、週の残りの日数に追加で 500 件のリクエストを許可します。週末に Quota ポリシーがリセットされるので、デベロッパーの週のリクエスト数は 1,000 件に戻ります。
Quota ポリシーの詳細については、Quota ポリシーをご覧ください。また、Reset Quota ポリシーの使用方法については、こちらのコミュニティ投稿をご覧ください。
サンプル
次のポリシーコードのサンプルでは、割り当てカウンタのリセット方法を説明します。
デフォルト カウンタをリセットする
<ResetQuota name="resetQuota"> <Quota name="MyQuotaPolicy"> <Identifier name="_default"> <Allow>100</Allow> </Identifier> </Quota> </ResetQuota>
Reset Quota ポリシーでは、<Quota> タグの name 属性を使用して、ターゲット Quota ポリシーを指定します。上の例では、MyQuotaPolicy ポリシーがターゲットです。
すべての Reset Quota ポリシーで、更新する Quota ポリシーのカウンタを指定するために <Identifier> タグが必要です。デフォルトでは、Quota ポリシーに <Identifier> タグも含まれていない限り、Quota ポリシーにはカウンタが 1 つあります。この例では、ターゲットの Quota ポリシーで <Identifier> タグを使用しないため、name 属性を _default として指定します。
<Allow> 要素では、ターゲット ポリシーの現在の割り当て数を減らすために使用される値を指定します。この例では、割り当てカウントを 100 減らしているので、ターゲットの Quota ポリシーに追加で 100 件のリクエストが許可されます。ターゲットの Quota ポリシーがリセットされると、この変更は破棄されます。
以下に、ターゲットの Quota ポリシーの定義を示します。
<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>
この例では、リクエストのヘッダーでターゲットの Quota ポリシーの名前を渡し、割り当てカウントを変更しています。これらの値を含むフロー変数を Reset Quota ポリシーで参照できます。
ID を指定する
<ResetQuota name="resetQuota"> <Quota name="QuotaPolicy"> <Identifier ref="request.header.clientId"> <Allow>100</Allow> </Identifier> </Quota> </ResetQuota>
ターゲット Quota ポリシーで <Identifier> タグを指定する場合は、Reset Quota ポリシーの <Identifier> タグに同じ値を指定して、特定の割り当て数を更新できます。以下のターゲット Quota ポリシーの <Identifier> タグが、Reset Quota ポリシーに指定された値とどの程度一致しているかを確認します。
<Quota name="QuotaPolicy"> <Identifier ref="request.header.clientId"/> <Interval>5</Interval> <TimeUnit>hour</TimeUnit> <Allow count="100"/> </Quota>
要素リファレンス
この要素リファレンスでは、Reset 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 |
ポリシーの内部名。 管理 UI プロキシ エディタで |
なし | 必須 |
continueOnError |
ポリシーが失敗した場合にエラーを返すには、 ポリシーが失敗した後もフローの実行を続行する場合は、 |
false | 省略可 |
enabled |
ポリシーを適用するには、 ポリシーを無効にするには、 |
true | 省略可 |
async |
この属性は非推奨となりました。 |
false | 非推奨 |
<DisplayName> 要素
管理 UI プロキシ エディタで name
属性と一緒に使用して、ポリシーのラベルに使用する自然言語名を指定します。
<DisplayName>Policy Display Name</DisplayName>
デフォルト |
なし この要素を省略した場合、ポリシーの |
---|---|
要否 | 省略可 |
タイプ | 文字列 |
<Quota> 要素
カウンタを更新するターゲット Quota ポリシーを指定します。
<Quota name="quotaName" ref="request.header.quotapolicy"> <Identifier name="identifierName" ref="request.header.identifier"> <Allow>100</Allow> </Identifier> </Quota>
デフォルト: | なし |
要否: | 必須 |
型: | なし |
属性
属性 | 説明 | デフォルト | 要否 |
---|---|---|---|
name |
ターゲット Quota ポリシーの名前を指定します。 |
なし | 省略可 |
ref | ターゲット Quota ポリシーの名前を含むフロー変数。ref と name の両方が指定されている場合は、ref が優先されます。 ランタイムに ref が解決されない場合は、name が使用されます。 | なし | 省略可 |
<Quota> / <Identifier> 要素
ターゲット Quota ポリシーで <Identifier> タグが指定されている場合に、カウンタを一意に識別するために使用される変数。
<Quota name="quotaName"> <Identifier name="identifierName" ref="request.header.identifier"> <Allow>100</Allow> </Identifier> </Quota>
デフォルト: | なし |
要否: | 必須 |
型: | 文字列 |
属性
属性 | 説明 | デフォルト | 要否 |
---|---|---|---|
name |
ターゲット Quota ポリシーのカウント ID の名前を指定します。<Identifier> タグを使用しない Quota ポリシーの場合は、_default を指定します。 |
なし | 省略可 |
ref |
ターゲット Quota ポリシーのカウント ID の名前を含むフロー変数。ref と name の両方が指定されている場合は、refが優先されます。ランタイムに ref が解決されない場合は、name が使用されます。 |
なし | 省略可 |
<Quota> / <Identifier> / <Allow> 要素
割り当てカウンタを減らす量を指定します。<Allow> を指定する必要があります。指定しない場合、ポリシーで割り当てが変更されません。
<Identifier name="identifierName" ref="request.header.identifier"> <Allow ref="request.header.allowquota">100</Allow> </Identifier>
デフォルト: | なし |
要否: | 必須 |
型: | 整数 |
属性
属性 | 説明 | デフォルト | 要否 |
---|---|---|---|
ref |
ターゲット Quota ポリシーの割り当て数の変更が含まれたフロー変数。 |
なし | 省略可 |
<Quota> / <Identifier> / <Class> 要素
割り当てカウンタを更新するクラスを指定します。Quota ポリシーでクラスを使用する方法の詳細については、Quota ポリシーをご覧ください。
<Identifier name="_default"> <Class ref="request.header.classIdentifier"> <Allow>200</Allow> </Class> </Identifier>
デフォルト: | なし |
要否: | 省略可 |
型: | なし |
属性
属性 | 説明 | デフォルト | 要否 |
---|---|---|---|
ref |
更新する割り当てクラスを含むフロー変数を参照します。 |
なし | 省略可 |
エラー リファレンス
このセクションでは、このポリシーによってエラーがトリガーされたときに返される障害コードとエラー メッセージ、Edge によって設定される障害変数について説明します。これは、障害に対処する障害ルールを作成するうえで重要な情報です。詳細については、ポリシーエラーについて知っておくべきことと障害の処理をご覧ください。
ランタイム エラー
このエラーは、ポリシーの実行時に発生することがあります。
障害コード | HTTP ステータス | 原因 | 解決方法 |
---|---|---|---|
policies.resetquota.InvalidRLPolicy |
500 | Reset Quota ポリシーの <Quota> 要素で指定された Quota ポリシーは API プロキシで定義されていないため、フロー中には使用できません。<Quota> 要素は必須であり、Reset Quota ポリシーでカウンタを更新するターゲット Quota ポリシーを特定します。 |
build |
policies.resetquota.FailedToResolveAllowCountRef |
なし | ポリシーの <Allow> 要素の許可カウントを含む変数への参照を値に解決できません。この要素は必須であり、割り当てカウンタを減らす量を指定します。 |
build |
policies.resetquota.FailedToResolveRLPolicy |
500 | <Quota> 要素の ref 属性によって参照される変数は解決できません。 |
build |
デプロイエラー
以下のエラーは、このポリシーを含むプロキシをデプロイするときに発生することがあります。
エラー名 | 原因 | 修正 |
---|---|---|
InvalidCount |
Reset Quota ポリシーの <Allow> 要素で指定されたカウント値が整数でない場合、API プロキシのデプロイが失敗します。 |
build |