スロットルリクエスト

Version:
日本語翻訳に関する免責事項

このページの翻訳はAIによって自動的に行われました。可能な限り正確な翻訳を心掛けていますが、原文と異なる表現や解釈が含まれる場合があります。正確で公式な情報については、必ず英語の原文をご参照ください。

Sitecoreへのリクエスト数を制限することができます。Services.Client。以下のように考えてみてください。

  • リクエスト頻度を制限するために。
  • ユーザータイプ(例えば無料か有料か)に応じて異なるサービス対応戦略を用いること。
  • 高頻度リクエスト攻撃を防ぐためです。

このトピックでは以下の内容を説明します:

スロットル戦略

Sitecore。Services.Clientは、1時間間隔あたりのリクエスト数を制限するためのAPIを提供しています。デフォルトでは、Sitecore。Services.Clientには2つのスロットル戦略があります:

  • スライディングウィンドウ – 時間間隔とその間隔内で許可されたリクエスト数を指定します。Sitecoreはさらなるリクエストを制限します。
  • 複合戦略 – 複数の戦略を一つにまとめます。

!注戦略自体を含めることはできません。なぜなら、それは循環的な参照を生むからです。

例えば、異なるパラメータを持つ複数のスライディングウィンドウ戦略を作成できます。最初のものは短い時間(1〜5秒)でリクエストを拒否し、2つ目ははるかに長い時間(24時間)後にリクエストを拒否します。

!注スケールされた環境では、Sitecoreはインスタンス間で戦略状態を共有しません。戦略は各インスタンスに独自の状態を持ちます。

スロットリングはデフォルトで無効化されています。スロットリングを有効にするには、以下の方法でApp_Config\Sitecore\Services.Client Sitecore.Services.Client.configファイルをパッチで行います。

  • の値をtrueに変更します。

戦略はmasterデータベースの*/sitecore/system/Settings/Services/Throttle Strategies*の項目にあります。

Throttle Strategiesの下に直接戦略を追加することもできますし、サブフォルダ(Strategy Folder)を作成してそのサブフォルダに戦略を追加することもできます。

戦略の設定

各戦略項目のCommon OptionsセクションのTypeフィールドの値を指定する必要があります。その値は戦略を実装するクラスのフルネームであり、例えばSitecore.Services.Infrastructure.Throttle.Strategies.SlidingWindowThrottleStrategy, Sitecore.Services.Infrastructure。

戦略項目は戦略の種類に依存する特定のパラメータセットを含みます。パラメータは戦略の振る舞いを指定します。

例えば、スライディングウィンドウ戦略の場合:

Set time span for a sliding window

例えば、複合戦略の場合:

Specify a composite strategy

戦略の適用

戦略は3つの方法で適用できます:

  • APIキーを使いましょう。
  • APIコントローラー(属性ベースのスロットル)のメソッドを使いましょう。
  • APIコントローラーを使いましょう。

これらの手法はどんな組み合わせでも使えます。Sitecoreはこれらの戦略の結果を組み合わせています。

Sitecoreは、リクエストに対して2つ以上の戦略を適用する場合、以下のルールを使用します。

  • 同じ戦略を複数回指定した場合、Sitecoreは一度だけ適用します。
  • メソッドやコントローラーに対して複数の戦略を指定した場合、Sitecoreはそれらの戦略を組み合わせます。

同じ戦略を複数回使うと、戦略は状態を共有します。例えば、Time Span = 1000 msとAllowed Number of Requests = 5 requestsパラメータでスライディングウィンドウ戦略を指定し、それを2つのサービスに適用すると、1000msのウィンドウ内で合計5回のリクエストしか可能になりません。

Sitecoreが戦略を適用した際にエラーが発生した場合、リクエストは内部サーバーエラー(コード500)を受け取ります。

APIキーの使用

APIキーを使って戦略を適用すると、Sitecoreはその戦略をすべてのSitecoreに適用します。このAPIキーを使うサービス。クライアントのリクエスト。APIキーとOData APIキーの両方を使って戦略を適用できます。

例えば:

ServicesController RequiredApiKey public class SampleController : ApiController Route("api/throttle/datawithkey") public IEnumerable GetData() { return new { "The Key : " + Guid.NewGuid() }; } }

例では、RequiredApiKey属性が定義されており、このコントローラーにアクセスするにはAPIキーが必須です。SitecoreはAPIキーが有効かつ使用可能かどうかを確認します。キーが有効であれば、Sitecoreは任意の戦略をリクエストに適用します。

APIキー項目の**「データ**」セクションにあるスロットル戦略フィールドで戦略を定義します。

APIコントローラーメソッドの使用

APIコントローラーメソッドに戦略を適用するには、コントローラーを定義し、その戦略を直接アクションに適用してください。例えば:

ServicesController public class SampleController : ApiController { Throttle("Sliding Window") Route("api/throttle/data") public IEnumerable GetData() { return new { "The Key : " + Guid.NewGuid() }; } Throttle("Composite") Route("api/throttle/compositedata") public IEnumerable GetCompositeData() { return new { "The Key : " + Guid.NewGuid() }; } }

コントローラーの使用

コントローラーに戦略を適用するには、コントローラーを定義し、その後コントローラーのクラスに戦略を適用します。例えば:

RequiredApiKey Throttle("07 On Controller") public class ThrottledOnControllerController : ApiController { Route("api/ThrottledOnController/data") public IEnumerable GetData() { return new { "Controller api/ThrottledOnController/data was called: " + DateTime.Now }; } }

Sitecore 07 On Controller戦略をThrottledOnControllerControllerコントローラーのあらゆる方法に適用します。

この記事を改善するための提案がある場合は、 お知らせください!