プラグインを使用する

<ph type="x-smartling-placeholder"></ph> 現在、Apigee Edge のドキュメントが表示されています。
Apigee X のドキュメント
詳細

Edge マネージャー v. 3.3.x

オーディエンス

このトピックは、バージョン管理されている既存のプラグインを使用する Edge インストールされています。また、Google Cloud Platform で提供される Spike Arrest と Quota プラグインについても説明します。 (どちらもインストールに含まれています)。新規のアプリケーションを開発し、 詳細は、Developing Applications カスタム プラグイン

Edge Appliance プラグインとは

プラグインは、Edge Scanner に機能を追加する Node.js モジュールです。プラグイン モジュール 一貫したパターンに従って、そのデータが Edge 自動的に検出して読み込むことができます。Edge Appliance には、既存の複数の また、カスタム プラグインを開発するで説明されているように、カスタム プラグインを作成することもできます。

Edge にバンドルされている既存のプラグイン Apigee

Edge AppSheet では、インストール時に多くのプラグインが提供されます。 次の 次の表に、よく使用されるプラグインをいくつか示します。

プラグイン デフォルトで有効 説明
アナリティクス Edge API から Apigee Edge に分析データを送信します。
oauth OAuth トークンと API キー検証を Edge Appliance に追加します。設定 構成する手順について説明します
割り当て いいえ Edge AppSheet へのリクエストに割り当てを適用します。Apigee Edge を使用して保存と管理を行う します。Quota プラグインの使用をご覧ください。
spikearrest いいえ トラフィックの急増や DoS 攻撃から保護します。Spike Arrest プラグインの使用をご覧ください。
ヘッダー(大文字) いいえ コメント付きのサンプル プロキシ。デベロッパーによるカスタム プラグインの作成を支援するガイドとして提供されています。 <ph type="x-smartling-placeholder"></ph>をご覧ください。 Edge Dataproc サンプル プラグイン
accumulate-request いいえ リクエスト データを 1 つのオブジェクトに蓄積してから、次の 渡す必要があります。Cloud Storage 上で動作する必要がある変換プラグインを作成するのに 単一の蓄積されたリクエスト コンテンツ オブジェクトです。
accumulate-response いいえ レスポンス データを 1 つのオブジェクトに蓄積してから、次の 渡す必要があります。Cloud Storage 上で動作する必要がある変換プラグインを作成するのに 単一の蓄積されたレスポンス コンテンツ オブジェクトです。
変換-大文字 いいえ リクエスト データまたはレスポンス データを変換します。このプラグインは、Google Cloud 向けの 変換プラグインの実装。サンプル プラグインは、簡単な変換を実行する (リクエストまたはレスポンス データを大文字に変換します)。必要に応じて簡単に XML から JSON への変換など、その他の種類の変換を実行する。
json2xml いいえ 承認ヘッダーまたはコンテンツ タイプ ヘッダーに基づいてリクエストまたはレスポンス データを変換します。対象 詳細については、プラグイン ドキュメントをご覧ください
quota-memory いいえ Edge AppSheet へのリクエストに割り当てを適用します。割り当てをローカルに保存し、管理する できます。
ヘルスチェック いいえ Edge Scanner プロセスに関する情報(メモリ使用量、CPU 使用率、 プラグインを使用するには、Edge で URL /healthcheck を呼び出します。 接続されます。このプラグインは、ユーザーが Google Cloud で 独自のヘルスチェック プラグインを実装できます。

既存のプラグインの場所

Edge AppSheet にバンドルされている既存のプラグインは、次の場所にあります。[prefix] npm プレフィックス ディレクトリです。<ph type="x-smartling-placeholder"></ph>をご覧ください。 このディレクトリが見つからなかった場合は、Edge AppSheet がインストールされている場所

[prefix]/lib/node_modules/edgemicro/node_modules/microgateway-plugins

プラグインの追加と構成

次のパターンに従って、プラグインを追加して構成します。

  1. Edge Appliance を停止します。
  2. Edge AppSheet 構成ファイルを開きます。詳しくは、<ph type="x-smartling-placeholder"></ph>をご覧ください。 オプションの構成変更をご覧ください。
  3. 次のように、構成ファイルの plugins:sequence 要素にプラグインを追加します。 プラグインは、このリストに表示されている順序で実行されます。
edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
     level: info
     dir: /var/tmp
     stats_log_interval: 60
  plugins:
     dir: ../plugins
     sequence:   
     - oauth
     - plugin-name
  1. プラグインを構成します。一部のプラグインには、 構成します。たとえば、次のスタンザを追加して Spike Arrest を構成できます。 できます。Spike Arrest プラグインの使用をご覧ください。 をご覧ください。
    edgemicro:
      home: ../gateway
      port: 8000
      max_connections: -1
      max_connections_hard: -1
      logging:
        level: info
        dir: /var/tmp
        stats_log_interval: 60
      plugins:
        dir: ../plugins
        sequence:
          - oauth
          - spikearrest
    spikearrest:
       timeUnit: minute
       allow: 10
    
  1. ファイルを保存します。
  2. 編集した構成ファイルに応じて、Edge Appliance を再起動または再読み込みします。

プラグイン固有の構成

構成ファイルで指定したプラグイン パラメータをオーバーライドするには、 プラグイン固有の構成はこのディレクトリにあります。

[prefix]/lib/node_modules/edgemicro/node_modules/microgateway-plugins/config

ここで、[prefix]npm 接頭辞ディレクトリです。<ph type="x-smartling-placeholder"></ph>をご覧ください。 このディレクトリが見つからなかった場合は、Edge AppSheet がインストールされている場所

plugins/<plugin_name>/config/default.yaml。たとえば、このカスタム ディメンションの plugins/spikearrest/config/default.yaml でブロックされ、他のすべての 確認します。

spikearrest:
   timeUnit: hour   
   allow: 10000   
   buffersize: 0

Spike Arrest プラグインの使用

Spike Arrest プラグインは、トラフィックの急増から保護します。リクエスト数をスロットリングし インスタンスによって処理されます。

Spike Arrest プラグインの追加

プラグインの追加と構成をご覧ください。

構成例 Spike Arrest

edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
    level: info
    dir: /var/tmp
    stats_log_interval: 60
  plugins:
    dir: ../plugins
    sequence:
      - oauth
      - spikearrest
spikearrest:
   timeUnit: minute
   allow: 10
   bufferSize: 5

構成オプション Spike Arrest

  • timeUnit: Spike Arrest の実行ウィンドウがリセットされる頻度。有効な値 秒または分です
  • allow: timeUnit 中に許可するリクエストの最大数。詳しくは、 また、複数の Edge プロセスをご覧ください。
  • bufferSize: (省略可、デフォルト = 0)bufferSize >0、SpikeArrest この数をバッファに格納します。次の実行「ウィンドウ」と同時に発生すると、 バッファリングされたリクエストが最初に処理されます。関連情報: 使用します

Spike Arrest の仕組み

Spike Arrest は、実際のトラフィックではなく、トラフィックの急増から トラフィックを特定の数のリクエストに制限するAPI とバックエンドでは、 Spike Arrest ポリシーにより、トラフィックを通常の量に できます。

ランタイムの Spike Arrest の動作が、リテラル 入力します。

たとえば、次のように 1 分あたり 30 件のリクエストの割合を指定したとします。

spikearrest:
   timeUnit: minute
   allow: 30

テストでは、30 件のリクエストを 1 秒間で送信しても、 1 分もかからないでしょうしかし、これはポリシーによって適用される設定とは異なります。考えてみれば 30 1 秒間のリクエスト数が急増すると、環境によっては小規模な急増と見なされる場合があります。

実際の結果スパイクのような動作を防ぐために、Spike Arrest は、許容される 次のように、設定をより短い間隔で分割してトラフィックを分割します。

1 分あたりの料金

1 分あたりのレートは、リクエストの許可間隔(秒単位)に平滑化されます。例: 30 1 分あたりのリクエスト数は次のように平滑化されます。

60 秒(1 分)÷ 30 = 2 秒間隔、つまり 2 秒ごとに約 1 件のリクエストが許可されます。 2 秒以内の 2 つ目のリクエストは失敗します。また、1 分以内の 31 件目のリクエストも失敗します。

1 秒あたりのレート

1 秒あたりのレートは、ミリ秒単位の間隔で許可されるリクエスト数に平滑化されます。たとえば 1 秒あたり 10 件のリクエストは次のように平滑化されます。

1, 000 ミリ秒(1 秒)÷ 10 = 100 ミリ秒間隔、または約 1 件のリクエストを許可 100 ミリ秒ごとにトリガーされます。100 ミリ秒以内の 2 つ目のリクエストは失敗します。また、11 回目のリクエストでは、 2 つ目が失敗します

上限を超えた場合

リクエスト数が指定された時間間隔内の上限を超えると、Spike Arrest が 次のエラー メッセージを HTTP 503 ステータスで返します。

{"error": "spike arrest policy violated"}

バッファの追加

ポリシーにバッファを追加することもできます。バッファを 10 に設定したとします。 Spike Arrest を超えても、API が直ちにエラーを返さないことがわかります。 できます。代わりに、リクエストは(指定された数まで)バッファされ、バッファ内のリクエストは 自動的に処理されます。デフォルト bufferSize は 0 です。

複数の Edge Micro を使用している場合 プロセス

許可されるリクエストの数は、Edge Micro ワーカー プロセスの数と できます。Spike Arrest は、ワーカー プロセスごとに許容されるリクエスト数を計算します。デフォルトでは Edge Micro プロセスの数は、Edge Micro が存在するマシン上の CPU の数と等しくなります。 インストールされています。ただし、Edge Micro の起動時にワーカー プロセスの数を構成できます。 start コマンドで --processes オプションを使用する。たとえば 特定の期間内にリクエストが 100 件に達したときに Spike Arrest をトリガーできます。また、Edge を オプション --processes 4 でデプロイし、allow: 25 を Spike Arrest 構成ですまとめると、目安として、allow 構成は パラメータの値を「desired Spike Arrest count / number of process」に設定します。

Quota プラグインの使用

割り当ては、アプリが API に送信できるリクエスト メッセージの数を指定します。 1 時間、1 日、1 週間、1 か月単位で設定できます。アプリが割り当て上限に達すると、以降の API 呼び出しは拒否されます。また、 Spike Arrest と割り当て

割り当てプラグインの追加

プラグインの追加と構成をご覧ください。

Apigee のプロダクト構成 エッジ

API プロダクトを構成する Apigee Edge UI で割り当てを構成します。知っておくべきこと 割り当てで制限する Apigee 対応プロキシが含まれているプロダクトを指定します。この プロダクトをデベロッパー アプリに追加する必要があります。Google Cloud の API 呼び出しを 場合、割り当てはそれらの API 呼び出しに適用されます。

  1. Apigee Edge 組織アカウントにログインします。
  2. Edge UI で、接続先の Microgateway 対応プロキシに関連付けられたプロダクトを開きます。 選択します。
    1. UI で、[Publish] メニューから [Products] を選択します。
    2. 割り当てを適用する API を含むプロダクトを開きます。
    3. [編集] をクリックします。
    4. [割り当て] フィールドで、割り当て間隔を指定します。たとえば、1 秒あたり 100 リクエスト、 1 分です。または 2 時間ごとに 50,000 件のリクエスト。

  1. [保存] をクリックします。
  2. プロダクトがデベロッパー アプリに追加されていることを確認します。次の操作を行うには、このアプリのキーが必要です 認証された API 呼び出しです

割り当ての構成例

edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
    level: info
    dir: /var/tmp
    stats_log_interval: 60
  plugins:
    dir: ../plugins
    sequence:
      - oauth
      - quota

割り当ての構成オプション

割り当てプラグインを構成するには、構成ファイルに quotas 要素を追加します。 次のように指定します。

edgemicro:
  home: ../gateway
  port: 8000
  max_connections: -1
  max_connections_hard: -1
  logging:
    level: info
    dir: /var/tmp
    stats_log_interval: 60
  plugins:
    dir: ../plugins
    sequence:
      - oauth
      - quota
quotas:
    bufferSize:
      hour: 20000
      minute: 500
      month: 1
      default: 10000
    useDebugMpId: true
    failOpen: true
    isHTTPStatusTooManyRequestEnabled: true
...
オプション 説明
bufferSize

(整数)bufferSize 構成を使用すると、Edge Dataproc の頻度を調整できます。 Apigee Edge と割り当てカウントを同期します。まず、 次の構成例について考えてみましょう。bufferSize

quotas:
 bufferSize:
  minute: 500
  default: 10000
 useDebugMpId: true
 failOpen: true

デフォルトでは、次の場合、マイクロサービスは 5 秒ごとに割り当てカウンタを Apigee Edge と同期します。 割り当て間隔は「分」に設定されています。 上記の構成では、API プロダクトで割り当て間隔が "minute"、Edge Apigee は、次の時間が経過するたびに、現在の割り当て数を取得するために Edge と同期します。 500 リクエストごと、または 5 秒が経過した時点のどちらか早い方のタイミングで送信されます。詳しくは 割り当てがカウントされる仕組みをご覧ください。

許可された時間 単位: minutehourdayweekmonthdefault

isHTTPStatusTooManyRequestEnabled

ステータスではなく HTTP 429 レスポンス ステータスを返すように割り当てプラグインを構成する 割り当て違反がある場合は 403。

デフォルト: falseデフォルトの場合、またはフラグが false に設定されている場合は、 割り当てから HTTP ステータス 403 が返される 有効になります。

このフラグを true に設定した場合、Quota は HTTP ステータス 429 を返します。 有効になります。

デフォルトの HTTP リターン ステータスを 429 に変更するには、次の構成を使用します。

edgemicro:
...
quotas:
  isHTTPStatusTooManyRequestEnabled: true
...
failOpen この機能を有効にすると、割り当て処理エラーが発生した場合に、 または "割り当てが適用される"リクエストが Edge へのリクエストでリモート割り当てカウンタの更新に失敗すると、 次に成功したリモート割り当てになるまで、ローカルの数のみに基づいて処理される 行われます。どちらの場合も、quota-failed-open フラグを 渡されます。

割り当ての「フェイル オープン」を有効にするには次の構成を設定します。

edgemicro:
...
quotas:
  failOpen: true
...
useDebugMpId MP のロギングを有効にするには、このフラグを true に設定します。 (Message Processor)ID 。

この機能を使用するには、次の構成を設定する必要があります。

edgemicro:
...
quotas:
  useDebugMpId: true
...

useDebugMpId が設定されている場合、Edge からの割り当てレスポンスには MP ID が含まれます。 取り込まれたログは、Edge API によってログに記録されます。次に例を示します。

{
    "allowed": 20,
    "used": 3,
    "exceeded": 0,
    "available": 17,
    "expiryTime": 1570748640000,
    "timestamp": 1570748580323,
    "debugMpId": "6a12dd72-5c8a-4d39-b51d-2c64f953de6a"
}
useRedis true に設定すると、プラグインは割り当てバッキング ストアに Redis を使用します。 詳細については、割り当てに Redis バッキング ストアを使用するをご覧ください。

割り当てがカウントされる仕組み

デフォルトでは、次の場合、マイクロサービスは 5 秒ごとに割り当てカウンタを Apigee Edge と同期します。 割り当て間隔は「分」に設定されています。間隔を 「minute」(「week」など)「month」の場合、デフォルトの更新間隔は 1 分です。

ここで重要なのは、割り当て間隔を指定することです。 Apigee Edge で定義されている API プロダクトに、これらの API が含まれています。割り当て間隔では、許可されるリクエスト数を指定します 分、時間、日、週、月ですたとえば、プロダクト A の割り当て間隔が 1 分あたり 100 件のリクエスト、プロダクト B の割り当て間隔は 1 時間あたり 10,000 件のリクエスト、

Edge Appliance quota プラグインの YAML 構成で割り当てが設定されない interval;それよりもむしろ、ローカルの Edge Appliance のオペレーションを行う頻度を インスタンスが割り当てを同期する Apigee Edge を使用。

たとえば、次の 3 つの API プロダクトが Apigee Edge で定義されているとします。 指定した割り当て間隔:

  • プロダクト A の割り当ては 1 分あたり 100 件です。
  • プロダクト B の割り当ては 1 時間あたり 5,000 リクエストです
  • プロダクト C のリクエストの割り当ては 1 か月あたり 1000,000 件です

これらの割り当て設定を念頭に置いて、Edge Scanner の quota プラグインを どうすればよいでしょうか。ベスト プラクティスは、Edge Gateway に同期間隔を構成し、 API プロダクトで定義されている割り当て間隔よりも小さくなる。次に例を示します。

quotas:
    bufferSize:
      hour: 2000
      minute: 50
      month: 1
      default: 10000

この構成では、説明する API プロダクトに次の同期間隔を定義します。 以前:

  • 商品 A を「分」に設定する指定します。Edge Appliance は、次の時間が経過すると Edge に同期します。 または 5 秒間隔(どちらか早いほう)で配信されます。
  • 商品 B は「時間」に設定されています指定します。Edge Appliance は、次の時間が経過すると Edge に同期します。 2, 000 件のリクエストごと、または 1 分ごと(どちらか早いほう)で送信されます。
  • 商品 C は「月」に設定されている指定します。Edge Appliance は、次の時間が経過すると Edge に同期します。 または 1 分間隔で受信できます。

Gateway インスタンスが Edge と同期するたびに、Microgateway のインスタンスは 割り当て数は取得した割り当て数に設定されます。

bufferSize 設定を使用すると、割り当てカウンタを調整できます。 Edge と同期します。トラフィックが多い状況では、bufferSize 設定 デフォルトの時間ベースの同期がトリガーされる前にバッファ カウンタを同期させることができます。

割り当てのスコープについて

割り当てカウントのスコープは、組織内の環境です。この範囲を実現するには Edge AppSheet は、「org +」 env + appName + productName)。

割り当てに Redis バッキング ストアを使用する

割り当てに Redis バッキング ストアを使用するには、 Synchronizer 機能。Redis を使用するために必要な基本構成は次のとおりです。 割り当てストレージ:

edgemicro:
  redisHost: localhost
  redisPort: 6379
  redisDb: 2
  redisPassword: codemaster

quotas:
  useRedis: true
edgemicro.redis* パラメータの詳細については、Synchronizer の使用をご覧ください。

割り当てプラグインのテスト

割り当てを超過すると、HTTP 403 ステータスがクライアントに返されます。 次のメッセージが表示されます。

{"error": "exceeded quota"}

相違点 違いはあるでしょうか。

現在の業務に適したツールを選択することが重要です。割り当てポリシーの構成 コース全体でクライアント アプリが API に送信できるリクエスト メッセージの数 指定することもできますQuota ポリシーは、 受信リクエストを集計する分散カウンタを維持します。

割り当てポリシーは、デベロッパーやパートナーとの業務契約または SLA を適用するために使用する 運用上のトラフィック管理よりもたとえば、割り当てを使用して、特定のサービスに対する 無料サービスにし、有料ユーザーには完全アクセス権を付与します。

API トラフィックの急増を防ぐには、Spike Arrest を使用します。通常、Spike Arrest は 考えられる限りの DDoS 攻撃やその他の悪意のある攻撃を阻止するために使用できます。