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