演習内容
このチュートリアルでは、次のことを学習します。
- リクエストとレスポンスに影響を及ぼすポリシーを追加する。
- ポリシーの効果を確認する。
必要なもの
- 評価アカウント。まだ持っていない場合は、初めての API プロキシの作成の手順に沿って登録できます。
- プロキシに含まれる 1 つ以上のポリシー(これもスタートガイド チュートリアルの一部です)。
curl
。コマンドラインから API 呼び出しを行うために、マシン上にインストールされている必要があります。
Spike Arrest ポリシーを追加する
このチュートリアルでは、突然のトラフィックの急増からターゲット サービスを保護するために、Spike Arrest ポリシーを追加して構成します。トラフィックの急増の原因としては、使用量の増加、クライアントのバグ、悪意のある攻撃などが考えられます。リクエスト数がレート制限を超えると、API はリクエストに HTTP 500 エラーを返します。
次の手順で、API プロキシに Spike Arrest ポリシーを追加します。
- apigee.com/edge にログインします。
- 左側のナビゲーション バーで [Develop] > [API Proxies] を選択します。
- Spike Arrest ポリシーを追加する API プロキシを選択します。
スタートガイド チュートリアルを使用している場合は、API プロキシを作成するで作成した getstarted プロキシに追加することもできます。
- 新しい API プロキシのエディタで、[Develop] タブをクリックします。
API プロキシ エディタを使用すると、API プロキシの構造を確認しながらフローを構成できます。このエディタには、プロキシのリクエスト メッセージとレスポンス メッセージのフローが視覚的に表示されます。また、プロキシを定義する、基盤となる XML の編集画面も表示されます。
- 左側の [Navigator] ペインで、[Proxy Endpoints] > [default] の下にある [PreFlow] をクリックします(フローの概念については別のチュートリアルで扱います)。
- リクエストの PreFlow に対応する最上部の [+ Step] ボタンをクリックします。これにより、作成可能なポリシーの一覧がカテゴリ別に表示されます。
- [Traffic Management] カテゴリで、[Spike Arrest] を選択します。[New Policy] ダイアログが表示されます。
- デフォルトの名前はそのままにして、[Add] をクリックします。新しいポリシーが、リクエストの PreFlow フローに適用されます。
- [Navigator] で、[Proxy Endpoints] > [default] の下の PreFlow がまだ選択されていることを確認します。API プロキシ エディタで、次の点に注目してください。
- 新しい Spike Arrest-1 ポリシーが、API プロキシ エディタの左側にある [Navigator] の [Policies] の下に追加されます。
- Spike Arrest-1 アイコンが、API プロキシ エディタの上部中央にあるデザイナー ビューに追加されて、プロキシのメッセージ フローが視覚的に表示されます。
- ポリシーの XML が、API プロキシ エディタの下部中央にあるコードビューに表示されます。
- [Navigator] の [Policies] の下にある [Spike Arrest-1] を選択します。API プロキシ エディタで次の点に注目してください。
- ポリシーの詳細が、API プロキシ エディタの上部中央にあるデザイナー ビューに表示されます。
- ポリシーの XML が、API プロキシ エディタの下部中央にあるコードビューに表示されます。
- API ポリシー エディタの右側にある [Property Inspector] に、ポリシーの XML 要素と属性値が表示されます。
-
ポリシーの XML で、
<Rate>
要素の値を 1pm(クラウドで 60 秒ごとに約 2 件のリクエストが許可される)に変更します。レートは、分単位(
pm
)または秒単位(ps
)の整数値で指定できます。この制限は非常に低く設定されており、このチュートリアルでポリシーを説明するためにのみ使用されます。通常は、はるかに高い制限が設定されます。Property Inspector の
Rate
の値も「1pm」に変更されます。Property Inspector の Rate の値は変更することもできます。この値を変更すると、XML ビューに反映されます。 - [Save] をクリックして、変更を含む現在のリビジョンを保存します。
-
curl
を使用して API を呼び出します。org_name は Apigee 組織名に置き換えます。curl "http://org_name-test.apigee.net/getstarted"
例:
curl "http://ahamilton-eval-test.apigee.net/getstarted" | python -m json.tool
リクエストが成功し、以前と同じ XML レスポンスが表示されていることを確認します(ウェブブラウザに URL だけを入力することもできます)。
- 1 分以内に
curl
コマンド(または、ブラウザ ウィンドウの更新)を 2、3 回実行します。ポリシーのレート制限を超えたため、次のメッセージが表示されます。{ "fault": { "faultstring":"Spike arrest violation. Allowed rate : 1pm", "detail": { "errorcode":"policies.ratelimit.SpikeArrestViolation"} } }
1 分以内にこれ以上の呼び出しを行うと、障害メッセージが表示されます。
- ポリシーを編集して、<
Rate>
の制限を 15pm に設定します(クラウドで 4 秒ごとに約 2 回の呼び出しが許可されます)。設定後、API プロキシを保存します。 - 繰り返し
curl
コマンドを実行するか、ブラウザを更新します(curl
のほうが高速です)。4 秒間隔で 1、2 回の呼び出しを行った場合、呼び出しに成功します。呼び出しの頻度が高くなり、4 秒以内に 3 回以上の呼び出しが行われると、エラーが発生します。ただし、1pm が設定されているため、1 分間ブロックされた状態が継続するのではなく、4 秒の間隔が経過した後は、引き続き呼び出しを行うことができます。