すべてのプロダクト
Search
ドキュメントセンター

API Gateway:スロットリングプラグイン

最終更新日:Aug 11, 2026

このトピックでは、スロットリングプラグインの設定と、一般的なシナリオの例について説明します。

1. 概要

  • スロットリングプラグインは、API 呼び出しのレートを制限します。 APIアプリ (アクセスに使用される AccessKey)ユーザー (アプリの所有者)、または カスタムパラメーター に基づいてトラフィックをスロットリングできます。

  • スロットリングプラグインは、2 つの設定テンプレートをサポートします:

    • パラメーターに基づくスロットリング設定: このテンプレートは、カスタムパラメーターに基づくスロットリングを設定するために使用します。

    • 基本スロットリング設定: このテンプレートは、コンソールの throttling 機能に対応しています。

  • throttling 機能はプラグインシステムの一部となりました。 既存の throttling インターフェイスとコンソールは引き続き利用可能です。 Throttling policiesthrottling plug-ins は同じタイプのプラグインです。 API に throttling plug-in をバインドすると、既存の throttling policy は無効になります

  • 元のスロットリングインターフェースまたはコンソールでスロットリングポリシーを作成または変更すると、変更内容がプラグインシステムに同期されます。ただし、プラグインシステムで行った変更は、スロットリングインターフェースまたはコンソールには同期されません。

2. 基本スロットリング設定

2.1 スロットリング機能

2.1.1 スロットリングしきい値

  • API トラフィック制限: ポリシーにバインドされた API に対して、時間単位あたりに許可される最大呼び出し回数。時間単位は、秒、分、時間、または日を指定できます。例: 5,000 回/分。

  • アプリトラフィック制限: ポリシーにバインドされた任意の API に対して、各アプリから時間単位あたりに許可される最大呼び出し回数。例: 50,000 回/時間。

  • ユーザートラフィック制限: ポリシーにバインドされた任意の API に対して、各 Alibaba Cloud アカウントから時間単位あたりに許可される最大呼び出し回数。1 つの Alibaba Cloud アカウントは複数のアプリを持つことができ、この制限はそのアカウントに属するすべてのアプリからの合計トラフィックに適用されます。例: 500,000 回/日。

説明

1 つのスロットリングプラグインで、上記のすべてのしきい値を同時に指定できます。ユーザーレベルのスロットリングしきい値は API レベルのスロットリングしきい値を超えることはできません。また、アプリケーションレベルのスロットリングしきい値はユーザーレベルのスロットリングしきい値を超えることはできません。

スロットリングポリシーに特別なアプリケーションまたはユーザーを追加することもできます。これにより、各アプリケーションまたはユーザーに対して特別なスロットリングしきい値を設定できます。特別なスロットリングしきい値は、API レベルのスロットリングしきい値を超えることはできません。

2.1.2 時間単位とスロットリングアルゴリズム

API Gateway スロットリングプラグインは、時間単位として秒 (SECOND)、分 (MINUTE)、時間 (HOUR)、日 (DAY) をサポートしています。分、時間、日の単位では固定タイムウィンドウアルゴリズムを使用します。秒の単位では、デフォルトでトークンバケットアルゴリズムを使用します。トークンバケットアルゴリズムがニーズに合わない場合は、代わりに固定タイムウィンドウアルゴリズムを設定できます。2 つのアルゴリズムについて、以下に説明します。

  • トークンバケットアルゴリズム: これは、秒単位のスロットリングにおけるデフォルトのアルゴリズムです。トークンバケットアルゴリズムには、トークンバケットと待機キューという 2 つの概念があります。API Gateway エンジンは、トークンバケットに定期的にトークンを追加します。クライアントリクエストが API Gateway に到着すると、まずバケットからトークンを取得しようとします。トークンが取得された場合、リクエストは通過します。トークンが取得されなかった場合、リクエストはキューに入ります。次のトークンは、キュー内のリクエストに優先的に割り当てられます。キューが一杯の場合、後続のリクエストは 429 エラーを受信します。リクエストがキューに入るのを防ぐには、blockingMode: QUICK_RETURN を設定できます。この設定を有効にすると、リクエストがトークンの取得に失敗した場合、システムはただちに 429 エラーを返します。

  • 固定タイムウィンドウアルゴリズム: 分、時間、または日を時間単位として使用する場合のアルゴリズムです。このアルゴリズムは、時間単位内で受け入れられるリクエストの合計数を制限します。たとえば、1 分あたり 1,000 リクエストの制限は、制限を超えるリクエストに対して 429 コードが返されることを指定します。リクエスト数は、次の分の開始時にリセットされます。

2.2 基本スロットリングプラグインの設定

プラグインは JSON または YAML 形式で設定できます。どちらの形式も同じスキーマを使用します。yaml to json 変換ツールを使用して、形式を相互に変換できます。以下に YAML 形式のテンプレートを示します。

---
unit: SECOND # 時間単位。有効な値: SECOND、MINUTE、HOUR、DAY。
apiDefault: 1000 # デフォルトの API レベルのスロットリングしきい値。
controlMode: FIX_WINDOW # 時間単位が秒の場合に固定タイムウィンドウアルゴリズムを使用することを示します。
blockingMode: QUICK_RETURN # トークンバケットアルゴリズム使用時に、トークンの取得に失敗したリクエストに対して 429 を返すことを示します。
userDefault: 30 # オプション。デフォルトのユーザーレベルのスロットリングしきい値。このしきい値を 0 に設定すると、ユーザーレベルのスロットリングは実行されません。ユーザーレベルのスロットリングしきい値は、API レベルのスロットリングしきい値を超えることはできません。
appDefault: 30 # オプション。デフォルトのアプリケーションレベルのスロットリングしきい値。このしきい値を 0 に設定すると、アプリケーションレベルのスロットリングは実行されません。アプリケーションレベルのスロットリングしきい値は、ユーザーレベルのスロットリングしきい値を超えることはできません。
specials: # オプション。特別なスロットリング設定。スロットリングポリシーで、特別なアプリケーションまたはユーザーのスロットリングしきい値を設定できます。
  - type: "APP" # 特別なスロットリングタイプ。値 APP は、AppKey に基づいて特別なアプリケーションに対してスロットリングが実行されることを示します。
    policies:
    - key: 10123123 # アプリケーション ID。アプリケーションの ID は、アプリケーションの詳細ページから取得できます。このページに移動するには、API Gateway コンソールの左側のナビゲーションペインで [Invoke API] > [Apps] を選択し、アプリケーションリストでアプリケーションの名前をクリックします。
      value: 10 # アプリの特別なスロットリングしきい値。このしきい値は、スロットリングポリシーのユーザーレベルのスロットリングしきい値を超えることはできません。
  - type: "USER" # 特別なスロットリングタイプ。値 USER は、特別な Alibaba Cloud アカウントに対してスロットリングが実行されることを示します。
    policies:
    - key: 123455 # Alibaba Cloud アカウントの ID。Alibaba Cloud コンソールの右上隅にあるプロファイル画像にポインタを移動すると、ID を取得できます。
      value: 100 # Alibaba Cloud アカウントの特別なスロットリングしきい値。このしきい値は、スロットリングポリシーの API レベルのスロットリングしきい値を超えることはできません。

2.3 基本スロットリングプラグインとプラグインデータセットの併用

2.3.1 プラグインデータセットの作成

  1. API Gateway コンソールにログオンします。左側のナビゲーションペインで、[API 管理] > [プラグイン管理] をクリックします。次に、[プラグインデータセット] タブをクリックします。

  2. 右上隅にある[データセットの作成]をクリックします。表示されるダイアログボックスで、データセットの[名前]を入力し、[タイプ]TRAFFIC_CONTROL_POLICY に設定します。[OK] をクリックしてデータセットを作成します。

  3. 作成したデータセットに移動します。右上隅で、[データセットエントリの作成] をクリックします。表示されたページで、スロットリングプラグインのキーと値を設定します。キーは AppId または Alibaba Cloud アカウント ID です。は対応するスロットリング値です。

2.3.2 スロットリングプラグインでのプラグインデータセットの使用例

基本スロットリングプラグインは、プラグインデータセットをサポートしています。プラグインデータセットを使用して、特定のアプリケーションまたはアカウントの特別なスロットリングしきい値を設定できます。次のコードは、その例を示しています。

---
unit: SECOND # 時間単位。有効な値: SECOND、MINUTE、HOUR、DAY。
apiDefault: 1000 # デフォルトの API レベルのスロットリングしきい値。
userDefault: 30 # オプション。デフォルトのユーザーレベルのスロットリングしきい値。このしきい値を 0 に設定すると、ユーザーレベルのスロットリングは実行されません。ユーザーレベルのスロットリングしきい値は、API レベルのスロットリングしきい値を超えることはできません。
appDefault: 30 # オプション。デフォルトのアプリケーションレベルのスロットリングしきい値。このしきい値を 0 に設定すると、アプリケーションレベルのスロットリングは実行されません。アプリケーションレベルのスロットリングしきい値は、ユーザーレベルのスロットリングしきい値を超えることはできません。
specials: # オプション。特別なスロットリング設定。スロットリングポリシーで、特別なアプリケーションまたはユーザーのスロットリングしきい値を設定できます。
  - type: "APP" # 特別なスロットリングタイプ。値 APP は、AppKey に基づいて特別なアプリケーションに対してスロットリングが実行されることを示します。
    policyDatasetId: 87 b65008e92541938XXXXXXXX6eda5 # プラグインデータセットの ID。
    policies:
    - key: 10123123 # アプリケーション ID。アプリケーションの ID は、アプリケーションの詳細ページから取得できます。このページに移動するには、API Gateway コンソールの左側のナビゲーションペインで [Invoke API] > [Apps] を選択し、アプリケーションリストでアプリケーションの名前をクリックします。
      value: 10 # アプリの特別なスロットリングしきい値。このしきい値は、スロットリングポリシーのユーザーレベルのスロットリングしきい値を超えることはできません。
  - type: "USER" # 特別なスロットリングタイプ。値 USER は、特別な Alibaba Cloud アカウントに対してスロットリングが実行されることを示します。
    policyDatasetId: 87b65008eXXXXXXXXXXXXa236eda5 # プラグインデータセットの ID。
    policies:
    - key: 123455 # Alibaba Cloud アカウントの ID。Alibaba Cloud コンソールの右上隅にあるプロファイル画像にポインタを移動すると、ID を取得できます。
      value: 100 # Alibaba Cloud アカウントの特別なスロットリングしきい値。このしきい値は、スロットリングポリシーの API レベルのスロットリングしきい値を超えることはできません。
重要

プラグインデータセットは、基本スロットリングプラグインでのみサポートされています。パラメータベースのスロットリングプラグインは、プラグインデータセットをサポートしていません。

3. パラメータベースのスロットリング設定

パラメータベースのスロットリングを使用すると、呼び出し元のリクエストパラメータと条件付き実行に基づいてトラフィックを制御できます。次のパラメータベースのスロットリング設定がサポートされています。

  • 秒、分、時間、または日レベルでのスロットリングをサポートします。

  • リクエストパラメータとシステムパラメータに基づいて条件を設定し、異なるスロットリングルールを実行できます。

  • 単一のパラメータまたは複数のパラメータの組み合わせを使用してスロットリングを設定できます。

  • スロットリングの範囲を API またはプラグインに設定できます。

3.1 パラメータベースのスロットリングのクイックスタート

各クライアント IP アドレスに次のスロットリングルールを適用するシナリオを考えます。ユーザーが AppId 10001 を持つキーで認証する場合、スロットルを 100 リクエスト/秒 に設定します。それ以外の場合は、スロットルを 10 リクエスト/秒 に設定します。

このシナリオでは、プラグインを次のように設定します。この例では、yaml を使用してプラグインを設定します。

---
scope: "PLUGIN"
# このスロットリングは、2 つのシステムパラメータに依存します。
# 1. ユーザー署名に使用される AppId。システムパラメータ CaAppId から取得されます。
# 2. ユーザーのソース ClientIP。システムパラメータ CaClientIp から取得されます。
parameters:
  AppId: "System: CaAppId"
  ClientIP: "System: CaClientIp"
rules:
  # 最初のスロットリングポリシー。`AppId` が `10001` の場合に有効になります。各 ClientIP を `100/秒` にスロットリングします。
  - name: "Vip"
    condition: "$AppId = 10001"
    byParameters: "ClientIP"
    limit: 100
    period: SECOND
  # 2 番目のスロットリングポリシーは `PerClientIP` という名前です。各 ClientIP を `10/秒` にスロットリングします。
  - name: "PerClientIP"
    byParameters: "ClientIP"
    bypassEmptyValue: true # `rules` 内のルールに条件がなく、byParameters パラメータを条件として使用する場合、パラメータが空であるか空の値が渡された場合、このルールは有効になりません。代わりに、デフォルトのスロットリングポリシーが使用されます。
    limit: 10
    period: SECOND

3.2 パラメータベースのスロットリングプラグインの設定

yaml または同等の json フォーマットを使用して、プラグインのメタデータを設定できます。

---
scope: "PLUGIN" # スロットリングプラグインの範囲。有効な値: PLUGIN、API。
blockingMode: QUICK_RETURN # トークンのないリクエストがキューに入らないことを指定します。代わりに、429 コードが返されます。詳細については、以下のフィールドの説明をご参照ください。
controlMode: FIX_WINDOW # 時間単位が秒の場合に固定タイムウィンドウアルゴゴリズムを使用することを示します。
defaultLimit: 100 # デフォルト値が指定されている場合の、デフォルトのスロットリング値。
defaultPeriod: SECOND # スロットリングのデフォルトの時間単位。
defaultRetryAfterBySecond: 60 # 次のリクエストまでの待機時間を示す Retry-After ヘッダーを返します。
defaultErrorMessage: "Throttled by 100/SECOND"
parameters: # スロットリングに使用できるパラメータ。
  clientIp: "System:CaClientIp"
  userId: "Token:userId"
rules:
  - name: "ByClientIp"
    byParameters: "clientIp"
    condition: "$clientIp !in_cidr '61.7.XX.XX/24'"
    limit: 10
    period: MINUTE
    retryAfterBySecond: 60 # 次のリクエストまでの待機時間を示す Retry-After ヘッダーを返します。
    errorMessage: "Throttled by 10/MINUTE from ${clientIp}"
  - name: "UserLimitExceptAdmin"
    byParameters: "clientIp"
    condition: "$userId !like 'admin%'"
    limit: 10
    period: MINUTE
    retryAfterBySecond: 60 # 次のリクエストまでの待機時間を示す Retry-After ヘッダーを返します。
  - name: "ClientIpLimitInCidr"
    byParameters: "clientIp"
    condition: "$clientIp in_cidr '67.0.XX.XX/8'"
    limit: 10
    period: MINUTE
  - name: "UserLimitPerMinute"
    condition: "$userId !like 'admin%'"
    limit: 15
    period: MINUTE
    byParameters: "clientIp"

フィールド:

  • scope (必須): スロットリングプラグインのスコープ。有効な値は APIPLUGIN です。複数の API が同じプラグインにバインドされている場合、scope の値はスロットリングポリシーのスコープに影響します。たとえば、ポリシーが 10 コール/秒 に設定されている場合:

    • 値が API の場合、スロットリングポリシーは各 API に個別に適用されます。この例では、各 API の制限は 10 コール/秒 です。

    • 値が PLUGIN の場合、このプラグインにバインドされているすべての API でこの制限が共有されます。この例のプラグインが API のグループにバインドされている場合、グループの合計トラフィック制限は 10 calls/second になります。

  • parameters (必須): スロットリングに関連するパラメーターのリストです。詳細については、「パラメーターと条件式の使用」をご参照ください。

  • rules (オプション): スロットリングポリシーのリストです。 defaultLimitperiod が設定されていない場合、このフィールドは空にできません。各スロットリングポリシーには、次のフィールドが含まれます:

    • name (必須): スロットリングポリシーの名前。 値は [A-Za-z0-9_-]+ に一致する有効な文字列であり、同じプラグイン内で一意である必要があります。

    • byParameters (必須): スロットリングパラメーターです。 複数のパラメーターの組み合わせを使用する場合は、カンマ (,) で区切ります。 たとえば、ClientIP は、ClientIP の値ごとに個別にスロットリングが実行されることを意味します。 UserId,Action は、これら 2 つのパラメーターの組み合わせた値に対して個別にスロットリングが実行されることを意味します。

    • bypassEmptyValue (オプション): true に設定すると、byParameters パラメーターが空であるか、空の値が渡された場合に、このルールは有効になりません。これは、ルールに condition がなく、byParameters を条件として使用する場合にのみ適用されます。この場合、デフォルトのスロットリングポリシーが代わりに使用されます。

    • condition (オプション):条件が設定されている場合、このスロットリングポリシーは、その条件が満たされた場合にのみ実行されます。

    • limit (必須): スロットリング値。正の整数である必要があります。値に -1 を指定した場合、この条件が満たされてもスロットリングは適用されません。

    • period (必須): スロットリング期間。有効な値: SECONDMINUTEHOUR、または DAY

    • errorMessage (オプション): カスタムエラーメッセージです。テンプレートとして定義できます。parameters で定義されたパラメーターは、${Name} 形式で参照できます。

    • retryAfterBySecond (オプション): 次のリクエストを行う前に待機する時間を示す Retry-After ヘッダーを返します。

  • defaultLimit (オプション): デフォルトのスロットリング値。これは正の整数である必要があります。

  • defaultPeriod (オプション):スロットリング期間です。有効な値は SECONDMINUTEHOUR、または DAY です。

  • defaultErrorMessage (オプション): カスタムエラーメッセージ。カスタムエラーメッセージが設定されている場合、返される X-Ca-Error-Message ヘッダーはカスタムメッセージを使用します。このメッセージではパラメーターを使用できません。

  • defaultRetryAfterBySecond (オプション): 次のリクエストを行うまでの待機時間を示す、返される Retry-After ヘッダーのデフォルト値です。

  • blockingMode (オプション): API Gateway は、標準トークンバケットアルゴリズムを使用してスロットリングを実装します。 次の一覧では、フィールド値とアルゴリズムについて説明します。

    • QUEUE (デフォルト): トークンバケットアルゴリズムには、トークンバケットと待機キューという 2 つの概念があります。API Gateway エンジンは定期的にトークンバケットにトークンを追加します。クライアントリクエストが API Gateway に到達すると、まずバケットからトークンの取得を試みます。トークンが取得された場合、リクエストは通過します。トークンが取得されなかった場合、リクエストはキューに入ります。次のバッチのトークンは、キュー内のリクエストに優先的に割り当てられます。キューがいっぱいの場合、後続のリクエストには 429 エラーが返されます。

    • QUICK_RETURN: この値を使用すると、リクエストはキュー内でトークンを待機しません。代わりに、429 コードが返されます。

  • controlMode: 時間単位が SECOND の場合に使用するスロットリングアルゴリズムを指定します。デフォルト値は TOKEN_BUCKET (トークンバケットアルゴリズム) です。FIX_WINDOW (固定タイムウィンドウアルゴリズム) に設定できます。

3.3 スロットリングプラグインでサポートされるパラメータ

次の表は、スロットリングプラグインでサポートされるパラメータについて説明しています。

ロケーション名

スコープ

説明

Method

リクエスト

HTTP リクエストメソッド (大文字)、GETPOST など。

Path

リクエスト

完全な HTTP リクエストパス。/path/to/query など。

Header

リクエスト

Header:{Name} を使用すると、{Name} という名前の HTTP ヘッダーの最初の値を取得できます。

Query

リクエスト

Query:{Name} を使用すると、クエリ文字列内の {Name} という名前のパラメーターの最初の値を取得できます。

Form

リクエスト

Form:{Name} を使用して、リクエストフォーム内の {Name} という名前のパラメーターの最初の値を取得します。

Host

リクエスト

Host:{Name} を使用すると、一致したワイルドカードドメイン名のテンプレートパラメーターを取得できます。

Parameter

リクエスト

Parameter:{Name} を使用すると、Name という名前のカスタム API パラメーターの最初の値を取得できます。

System

リクエスト

{Name} という名前のシステムパラメーターの値を取得するには、System:{Name} を使用します。

Token

リクエスト

jwt および oauth2 認証シナリオでは、Token:{Name} を使用して、トークン内の {Name} という名前のクレームの値を取得します。

3.4 実行ルール

API Gateway は、次のルールを使用してパラメータベースのスロットリングを実行します。

  • プラグインは、parameters 設定を使用して、リクエストコンテキストからパラメーター値を取得します。

  • conditiontrue と評価されるルール、または condition が設定されていないルールはすべて実行されます。

  • リスト内の複数の照合ルールで byParameters の設定が同じである場合、設定順で最初のルールのみが実行され、他のルールは有効になりません。

4. 例

4.1 基本スロットリング

基本スロットリングは、API レベル、AppKey ベース、およびユーザーレベルのスロットリングをサポートします。

---
unit: SECOND # スロットリングのデフォルトの時間単位。有効な値: SECOND、MINUTE、HOUR、DAY。
apiDefault: 50 # デフォルトの API レベルのスロットリングしきい値。
defaultRetryAfterBySecond: 60 # デフォルトで、次のリクエストまでの待機時間を示す Retry-After ヘッダーが返されます。
appDefault: 20 # オプション。デフォルトのアプリケーションレベルのスロットリングしきい値。このしきい値は、ユーザーレベルのスロットリングしきい値を超えることはできません。
userDefault: 30 # オプション。デフォルトのユーザーレベルのスロットリングしきい値。このしきい値は、API レベルのスロットリングしきい値を超えることはできません。
specials: # オプション。特別なスロットリング設定。スロットリングポリシーで、特別なアプリケーションまたはユーザーのスロットリングしきい値を設定できます。
  - type: "APP" # 特別なスロットリングタイプ。値 APP は、AppKey に基づいて特別なアプリケーションに対してスロットリングが実行されることを示します。
    policies:
      - key: 10001 # アプリケーション ID。アプリケーションの ID は、アプリケーションの詳細ページから取得できます。このページに移動するには、API Gateway コンソールの左側のナビゲーションペインで [Invoke API] > [Apps] を選択し、アプリケーションリストでアプリケーションの名前をクリックします。
        value: 3 # アプリケーションの特別なスロットリングしきい値。このしきい値は、ユーザーレベルのスロットリングしきい値を超えることはできません。
      - key: 10003
        value: 25
  - type: "USER" # 特別なスロットリングタイプ。値 USER は、特別な Alibaba Cloud アカウントに対してスロットリングが実行されることを示します。
    policies:
      - key: 102 # Alibaba Cloud アカウントの ID。Alibaba Cloud 管理コンソールの右上隅にあるプロファイル画像にポインタを移動すると、ID を取得できます。
        value: 10 # Alibaba Cloud アカウントの特別なスロットリングしきい値。このしきい値は、API レベルのスロットリングしきい値を超えることはできません。
      - key: 233
        value: 35

4.2 パラメータベースのスロットリング

この例は、レート制限ポリシーを設定する方法を示しています。

  • 各ソース IP ごとに、100 コール/分 が許可されています。

  • クライアント IP が 58.66.XX.XX/24 の範囲内にある場合、アクセスは制限されません。

  • 63.0.XX.XX および 73.0.XX.XX/24 の範囲にあるクライアント IP からのアクセスは、5 calls/day に制限されます。

---
scope: API # スロットリング範囲。有効な値: API、PLUGIN。
parameters: # スロットリングに使用されるパラメータ。スロットリングは ClientIP パラメータのみに基づいて実行されます。このパラメータの値は、CaClientIp システムパラメータから取得できます。
  ClientIp: "System: CaClientIp"
rules:
  - name: whitelist # ホワイトリストポリシー。このポリシーで指定された条件を満たすクライアント IP アドレスに対しては、スロットリングは実行されません。
    condition: "$ClientIp in_cidr '58.66.XX.XX/24'"
    limit: -1 # 値 -1 は、スロットリングが実行されないことを示します。
  - name: banList # 特別なスロットリングポリシー。クライアント IP アドレスがこのポリシーで指定された条件を満たす場合、クライアント IP アドレスには 1 日あたり最大 5 回の API 呼び出しが許可されます。
    condition: "$ClientIp in_cidr '63.0.XX.XX' or $ClientIp in_cidr '73.0.XX.XX/24'"
    byParameters: "ClientIp"
    limit: 5
    period: DAY
  - name: 100perIp # デフォルトのスロットリングポリシー。各クライアント IP アドレスには、1 分あたり最大 100 回の API 呼び出しが許可されます。
    byParameters: "ClientIp"
    limit: 100
    period: MINUTE # 時間単位。有効な値: SECOND、MINUTE、HOUR、DAY。

4.3 CC 攻撃対策設定

このセクションでは、CC 攻撃を防ぐためにスロットリングプラグインを設定する方法の例を示します。

  • 各ソース IP には 3 コール/秒 が許可されています。

  • 送信元 IP が 3 calls/second の制限を超えた場合、アクセスは 10 秒間ブロックされます。

---
scope: API # スロットリング範囲。有効な値: API、PLUGIN。
defaultLimit: 3000 # デフォルトのスロットリングしきい値。
defaultPeriod: SECOND # スロットリングのデフォルトの時間単位。
defaultRetryAfterBySecond: 60 # デフォルトで、次のリクエストまでの待機時間を示す Retry-After ヘッダーが返されます。
parameters: # スロットリングに使用されるパラメータ。スロットリングは ClientIP パラメータのみに基づいて実行されます。このパラメータの値は、CaClientIp システムパラメータから取得できます。
  clientIp: "System: CaClientIp"
rules:
  - name: "AntiCcAttackRule" # 各クライアント IP アドレスは、1 秒あたり 3 回の API 呼び出しを開始できます。このしきい値を超えると、クライアント IP アドレスは 10 秒間ブロックされます。
    byParameters: "clientIp"
    limit: 3
    period: SECOND
    blockingPeriodBySecond: 10 # 専用インスタンスでのみ有効です。

5. エラーコード

エラーコード

HTTP ステータスコード

エラーメッセージ

説明

T429ID

429

Throttled by INNER DOMAIN Flow Control, ${Domain} is a test domain, only 1000 requests per day

デフォルトのセカンドレベルドメイン名を使用してアクセスする場合、制限は 1,000 呼び出し/日です (中国以外および中国 (香港) のリージョンでは 100 呼び出し/日)。この制限を解除するには、カスタムドメイン名をバインドします。

T429IN

429

Throttled by INSTANCE Flow Control

現在のインスタンスのスロットリング制限がトリガーされています。トラブルシューティングを行うには、DescribeInstances API を呼び出し、レスポンスの InstanceRpsLimit フィールドで現在のインスタンス仕様の RPS 制限を確認し、リクエスト量がこの制限に達しているかどうかをチェックしてください。制限に達している場合は、インスタンス仕様をアップグレードする必要があります。[インスタンスとクラスター] > [専用インスタンス] に移動してインスタンスを検索し、[アップグレード] をクリックして、より高い仕様を選択します。詳細については、「インスタンス仕様の変更に関するドキュメント」をご参照ください。アップグレードするとインスタンス仕様が変更されます(例:api.s1.small から api.s1.medium へ)。インスタンス数が増えるわけではありません。

T429GR

429

Throttled by GROUP Flow Control

現在のグループのスロットリング制限がトリガーされました。

T429PA

429

Throttled by API Flow Control

プラグインのデフォルトの API スロットリングがトリガーされました。

T429PR

429

Throttled by PLUGIN Flow Control

プラグインの特別なスロットリングルールがトリガーされました。

6. 制限事項

  • 最大 16 個のパラメータを定義できます。

  • 1 つの式は 512 文字を超えることはできません。

  • 1 つのプラグインのメタデータは、サイズが 50 KB を超えることはできません。

  • 各プラグインは、最大 16 個の rules を持つことができます。

  • rule は、byParameters に最大 3 つのパラメーターを含めることができます。

  • スロットリングパラメータに多くの一意の値がある場合 (たとえば、ソース IP に基づいて日レベルのスロットリングを使用する場合)、システムはメモリ使用量を管理するために一部のスロットリングレコードを解放する場合があります。サーバーレスインスタンスの場合、パラメータベースのスロットリングプラグインでは、最大 1,000 個の個別のパラメータ値が許可されます。専用インスタンスの場合、プラグインでは最大 100,000 個の個別のパラメータ値が許可されます。