APIレートリミット(スロットリング)

テナント毎に REST API のレートリミット(スロットリング)を設定することができます。

レートリミットを設定するには、画面右上の「管理」から「テナント管理」を選択しテナント管理画面に移動してください。 テナント管理画面で、該当テナントの「レートリミット」を選択すると、レートリミット設定画面に入ります。

注意

ライセンスキーによりレートリミット制限がかかっている場合があります。 この場合、ライセンスキー制限とデベロッパーコンソールで指定した値の両方が適用されます。 具体的には、両者を比較して小さい(制限が厳しい)ほうの値が使用されます。

テナント全体設定

テナント全体に設定する REST API レートリミットを設定します。

レートリミット値は、1分あたりに発行することが可能な REST API のコール数です。 例えばこの値を 10,000 に設定した場合、このテナントについては1分毎に 10,000 回まで REST API を呼び出すことができます。

制限値を超過した場合は、以降の REST API リクエストに対しては 429 Too Many Requests エラーが返却されます。

0 を設定した場合は無制限となります。

カスタムAPI個別設定

API Gateway で登録したカスタム API については、API毎にレートリミット値を個別に設定することができます。

設定値は JSON で記述し、API名称をキーに、1分毎のレートリミット値を指定します。 以下に例を示します。

{
  "api1": 10000,
  "api2": 20000
}

この例では api1 については 10,000回/分、api2 については 20,000回/分のレートリミットを設定します。

なお、テナント全体でレートリミット値を設定している場合、カスタムAPIと全体の両方のレートリミット値が適用されます。

レートリミットのアルゴリズム

レートリミットアルゴリズムは、単純な トークンバケット 方式となっています。

  • レートリミット値と同じサイズのバケットを用意します。
  • 1分毎に1度、レートリミット値と同数のトークンがバケットに投入されます。 (バケットサイズがレートリミット値と同じなので、実際にはバケットサイズ一杯にトークン数がリセットされることになります)
  • API を1個実行するたびに、トークンが1個消費されます。
  • API 呼び出し時にトークンがなくなっていた場合は、429 Too Many Requests エラーが返却されます。

レートリミット対象の API

原則、すべての REST API 呼び出しがレートリミットの対象となります。ただし、以下のものは除外されます。

  • アプリケーションキー認証が失敗した場合 (テナントID/アプリケーションキーが不正)
  • 存在しない REST API に対する呼び出し
  • システムログ取得 API