次の方法で共有


使用量のクォータをキー別に設定する

適用対象: 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 で指定した期間中に許可する最大合計キロバイト数。 ポリシー式は使用できません。 callsbandwidth のいずれかまたは両方と同時に指定する必要があります。 該当なし
calls renewal-period で指定した期間中に許容する最大呼び出し総数。 ポリシー式は使用できません。 callsbandwidth のいずれかまたは両方と同時に指定する必要があります。 該当なし
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

使用法

使用上の注意

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 を使用した高度な要求スロットル」を参照してください。

ポリシーに対する処理の詳細については、次のトピックを参照してください。