API速度制限

IBM® NS1 Connect® は、APIレート制限を使用して、一定期間に発行されるアカウントごとのAPIリクエスト数を制御する。

そうすることで、リソースを公平に分配し、すべてのプラットフォームユーザーに高いパフォーマンスを保証することができます。 API制限の実装は柔軟で、トークンバケットアルゴリズムに基づいており、一定期間内に一定数のリクエストを許可します。 利用可能なトークンは、自動化がリクエストを送信できる限り、すぐに使用される可能性があります。 このプラットフォームは、自動的な不正利用の閾値を採用してプラットフォームを保護しています。

トークンは、期間ごとに許可されたリクエスト数と期間の秒数を等しくしたレートで補充されます。 ユーザーが NS1 Connect に API リクエストを行う際、レスポンスには、以下のような正確な API レート制限情報を提供する追加ヘッダーが含まれる:

:プラットフォームを保護するために自動的な不正使用のしきい値が設定されています。プラットフォームが不正使用と見なされる過剰なリクエストを検知した場合、これらのメカニズムによる厳格なレート制限が可能です。
  • エンドポイントのレート制限期間あたりのトークン数
  • レート制限期間内の秒数
  • 当期のトークン残数

期間あたりのトークン(許可されたリクエスト)の数は、APIエンドポイントによって異なる場合があります。 例えば、単純な GET リクエストでは、ユーザーに最大900トークン(許可されたリクエスト)が割り当てられ、レート制限期間は300秒となるかもしれません。 ユーザーは900トークンの制限を必要なだけすぐに使用できます。 リクエストごとに、残りのトークンが1つずつ減っていきます。 このルートの補充速度は、900/300=3トークン/秒となります。 これにより、ユーザーはリクエストを制限なく安定して行うためにアプリケーションのペースを調整したり、複数のリクエストをまとめて送信し、トークンが補充されるのを待ったりすることができます。

POSTPUT などの他の経路は、より計算コストが高いため、レート制限が低くなります。 POST たとえば、リクエストには300秒あたり300リクエストに近いレート制限が設定されている可能性があるため、トークンは1秒あたり1リクエストの割合でアカウントにのみ復元されます。 この実装と連携するようにアプリケーションを戦略的に開発し、変更中の中断を回避することが最善です。

すべてのリクエストに対する現在のレート制限データは、 cURL コマンドに -v フラグを含めることで、各APIレスポンスで確認できます。 例えば、以下のリクエストには、このエンドポイントのレート制限を含めるための -v フラグが含まれています
curl -v -X GET -H "X-NSONE-Key: ${NSONE_API_KEY}' https://api.nsone.net/v1/monitoring/regions

応答の例:

> GET /v1/monitoring/regions HTTP/1.1
< HTTP/1.1 200 OK
...
< x-ratelimit-by: customer
< x-ratelimit-limit: 100
< x-ratelimit-period: 1
< x-ratelimit-remaining: 99
curl -v -X GET -H "X-NSONE-Key: ${NSONE_API_KEY}' https://api.nsone.net/v1/monitoring/regions