クオータとレート制限ガイド
FedExは毎日何千ものAPIリクエストを受け取ります。弊社は、この大容量を管理するために3つのスロットルメカニズムを採用しています。FedExリソースを効果的かつ効率的に割り当てるために、クォータ、レート制限、およびしきい値が設定されています。
クォータは組織ごと、APIプロジェクトごとに定義されます。
組織ごとのクオータ
トランザクションクオータは、組織に許可されたAPIリクエストの最大数です。つまり、API利用者は、組織内のすべてのプロジェクトで作成されたAPIリクエストの総数を考慮する必要があります。なお、FedEx API応答で返されるデータの量に関係なく、各リクエストは等しくカウントされます。
例:組織には、1日あたり500,000件のAPIリクエストのクオータがあります。組織には、1日あたり500,000のAPIリクエストのクオータがあります。組織がその日の最初の数時間以内に送信されたリクエストの数が500,000に達すると、そのクオータに達したことになります。その後、一日中、エラーコード「429 – リクエストが多すぎます – 1日のトランザクションクオータを超過しました。12:00AM GMT以降に再試行してください。」が、翌日までリクエストごとに返されます。
APIプロジェクトごとのクオータ
このクォータは、プロジェクトと機能という2つの異なるレベルで適用されます。
機能とは何を意味するのでしょうか?
各APIは、提供する機能ごとにグループ化されています。各機能グループとは、1つ以上のエンドポイントのバンドルを指します。例えば、Basic Integrated Visibility機能には6つのAPIエンドポイントがありますが、Address Validation機能には1つのAPIエンドポイントしかありません。
追跡機能のデフォルトのPer Capability Per Project(PCPP)クォータ制限は1日あたり100Kリクエストとなります。つまり、組織内のいずれかのプロジェクトから、追跡機能にある6つのエンドポイントのいずれかへのトラフィックがこの制限を超えると、その日の終わりまで「"429 'Too many requests'"」エラーが送信されます。なお、6つのエンドポイントのいずれかに対する後続のすべての追跡リクエストにも送信されます。
例:プロジェクトにト機能ごとに100Kの制限がある場合(エンドポイントが6つ)、6つのエンドポイントすべてのトランザクションの合計数が100Kの制限までカウントされます。プロジェクトがその制限を超えると、後続の追跡トランザクションで、その日の午前12時(グリニッジ標準時)までに「429 – Too many requests – Daily transaction quota exceeded」というエラーコードが表示されます。
レート制限
各プロジェクトには、10秒ごとに400件のトランザクションのトランザクションレート制限があります。各10秒の時間枠内でトランザクションがこの制限を超過すると、スロットリング制限が適用されます。
最初の数秒でこの制限に達すると、その10秒のウィンドウの残りの秒で送信されたトランザクションはスロットルされます。このスロットリング期間中、「429–リクエストが多すぎます」というエラーコードが返されます。
FedExが最初の2秒間に1400件のリクエストを受信した場合、後続のトランザクションはその後の8秒間スロットルされ、「429 – 短期間で受信したリクエストが多すぎます。しばらくしてもう一度お試しください」というメッセージが返されます。
10秒が経過すると、スロットル制限が解除され、別のカウンターが次の10秒間のリクエスト数の追跡を開始します。
しきい値
しきい値は、FedEx API認証プロセスの回復性を高めるために、IPアドレスレベルで適用されます。また、このメカニズムは、Authトークン生成サービスにのみ適用されます。しきい値には次の2種類があります。
- バーストしきい値:1秒あたり3ヒット、連続して5秒間
- 平均しきい値:1秒あたり1ヒット、連続して2分間
- パブリックIPアドレスがこれらのしきい値制限のいずれかに違反すると、10分間のペナルティが課せられます。そして、この10分間の時間枠内のすべてのリクエストには「403 許可されていません」ステータスコードが返されます。
- API利用者がこのペナルティ時間中にしきい値制限に違反し続けた場合、ペナルティ時間は延長されます。なお、APIユーザーは、次の10分間しきい値制限に違反しないことで、ペナルティ時間を終了することができます。
- しきい値メカニズムは、ユーザーのパブリックIPアドレスに基づいています。ユーザーが1つのパブリックIPの背後に10個のVMインスタンスを設定すると、そのIPアドレスからのすべてのリクエストがしきい値の制限にカウントされます。
トラフィック管理
次の3つのメカニズムはそれぞれ、トラフィック管理の異なる側面に対処します。
クオータは組織レベルで適用されます。つまり、組織内のすべてのAPIが生成したトラフィック総計は、このトランザクションクオータの対象となります。
プロジェクトレベルで適用されるクォータ:プロジェクト内の1つのAPI機能に対して生成される合計トラフィックは、このトランザクションクォータの対象となります。
レート制限はプロジェクトレベルで適用されます。つまり、プロジェクト内のすべてのAPIが生成したトラフィック総計は、このレート制限の対象となります。
しきい値は、IPアドレスレベルで適用されます。
注意:FedExは、誤用、過剰使用、乱用を防ぐために、上記のスロットリングメカニズムのいずれかに制限を設ける場合があります。なお、FedExは、API利用者間の公平なアクセスを維持するため、およびFedExのリソースを効果的かつ効率的に割り当てるために、予告なしにクオータを変更する権利を留保します。
よくある質問
ある組織の複数のプロジェクトからのすべてのAPIトランザクションは、クオータにカウントされますか?
クオータは組織レベルで適用されます。1つの組織は複数のプロジェクトを実行することができ、各プロジェクトで一つまたは複数のAPIを利用することができます。その結果、ある組織の異なるプロジェクトのすべてのAPIが生成するトラフィック総計が、1日あたりのクオータにカウントされます。
クオータ違反とレート制限違反の両方で同じ429エラーが返された場合、発生した違反の種類を特定するにはどうすればよいですか?
エラーメッセージを読むことで違反を特定できます。
| 違反 | エラーメッセージ |
|---|---|
| 組織ごとのクオータ | リクエストが多すぎます – 1日のトランザクションクオータを超過しました。12:00AM GMT以降に再試行してください。 |
| APIプロジェクトごとのクオータ | リクエストが多すぎます:プロジェクトごとのデイリークオータが超過しました。12:00AM GMT以降に再試行してください。 |
| レート制限 | リクエストが多すぎます:レート制限しきい値を超えました。10秒後に再試行してください |
しきい値制限違反の解決策は?
OAuthトークンは1時間有効です。APIの利用者には、このトークンを1時間使用し、そのトークンの有効期限が切れてから新しいトークンをリクエストすることをお勧めしています。
しきい値を超過したときの例を教えてもらえますか?
監視ウィンドウは、バーストしきい値で5秒、平均しきい値で2分です。これらのウィンドウのいずれかの間に、IPアドレスがしきい値制限のいずれかに違反した場合、しきい値ペナルティが課されます。
例:IPアドレスが1秒あたり3ヒットが2秒続き、その後、ヒット率が1秒あたり3ヒットを下回った場合は、バーストしきい値に違反していません。ただし、IPアドレスが5秒間連続して1秒あたり3ヒット(例:ヒット率を維持したまま5秒間に14回のヒットというバーストしきい値)した場合、バーストしきい値に違反しています。
