使用量のクォータをキー別に設定する
適用対象: Developer | Basic | Standard | Premium
quota-by-key
ポリシーは、更新可能な呼び出しまたは有効期間中の呼び出しのボリュームと帯域幅クォータの両方またはそのどちらかをキーに基づいて適用します。 キーには任意の文字列値を設定でき、通常はポリシー式を使用して指定します。 必要に応じて増分条件を追加し、クォータに対してカウントする要求を指定することもできます。 複数のポリシーによって同じキー値が増分される場合は、要求ごとに 1 回だけ増分されます。 クォータを超えると、呼び出し元は応答状態コード 403 Forbidden
を受け取ります。応答には、推奨される再試行間隔 (秒単位) の値を示す、Retry-After
ヘッダーが含まれます。
レート上限とクォータの違いについては、レート上限とクォータに関するページを参照してください。
注意
基になるコンピューティング リソースがサービス プラットフォームで再起動されると、クォータに達した後も API Management がしばらくの間要求を処理し続ける可能性があります。
Note
ポリシーの要素と子要素を、ポリシー ステートメントで指定された順序で設定します。 このポリシーの構成に役立つ、ガイド付きのフォーム ベース エディターがポータルに用意されています。 API Management ポリシーを設定または編集する方法について説明します。
ポリシー ステートメント
<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" />
属性
属性 | 説明 | 必要 | Default |
---|---|---|---|
bandwidth | renewal-period で指定した期間中に許可する最大合計キロバイト数。 ポリシー式は使用できません。 |
calls と bandwidth のいずれかまたは両方と同時に指定する必要があります。 |
該当なし |
calls | renewal-period で指定した期間中に許容する最大呼び出し総数。 ポリシー式は使用できません。 |
calls と bandwidth のいずれかまたは両方と同時に指定する必要があります。 |
該当なし |
counter-key | quota policy に使用するキー。 キー値ごとに、ポリシーが構成されているすべてのスコープに対して 1 つのカウンターが使用されます。 ポリシー式を使用できます。 |
はい | 該当なし |
increment-condition | クォータに対して要求の件数をカウントするかどうかを指定するブール式です (true )。 ポリシー式を使用できます。 |
いいえ | 該当なし |
increment-count | 要求ごとにカウンターを増やす数。 ポリシー式を使用できます。 | いいえ | 1 |
renewal-period | クォータがリセットされた後の固定ウィンドウの長さ (秒単位)。 各期間の開始は、first-period-start に対して相対的に計算されます。 最小期間: 300 秒。 renewal-period を 0 に設定すると、この期間が無限に設定されます。 ポリシー式は使用できません。 |
はい | なし |
first-period-start | クォータの更新期間の開始日付と時刻は、yyyy-MM-ddTHH:mm:ssZ とISO 8601 標準で指定されています。 ポリシー式は使用できません。 |
いいえ | 0001-01-01T00:00:00Z |
使用法
- ポリシー セクション: inbound
- ポリシー スコープ: グローバル、ワークスペース、製品、API、操作
- ゲートウェイ: クラシック、セルフホステッド、ワークスペース
使用上の注意
counter-key
属性値は、他の API 間で合計値を共有したくない場合は、API Management インスタンスのすべての 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 Management を使用した高度な要求スロットル」を参照してください。
関連ポリシー
関連するコンテンツ
ポリシーに対する処理の詳細については、次のトピックを参照してください。