このページは Apigee と Apigee ハイブリッドに適用されます。
Apigee Edge ドキュメントを表示する
ポリシーベースの機能を API プロキシに追加する場合は、次の 2 段階で作業を行います。
- ポリシータイプのインスタンスを構成する。
- ポリシー インスタンスをフローに接続する。
下の図は、ポリシーとフローの関係を示しています。ご覧のように、ポリシーは処理のステップとしてフローに接続されます。API の目的の動作を構成するには、フローについて少し理解する必要があります(このトピックについては、上記のフローの構成で説明しています)。
よく使用されるポリシータイプの 1 つに、SpikeArrest ポリシーがあります。SpikeArrest は、バックエンド サービスのパフォーマンス低下を引き起こすメッセージ トラフィックの急増を防止します。
フローにポリシーを接続する
新しいプロキシ エディタ
ポリシーをフローに接続するには:
- API プロキシを選択し、[Develop] ビューに移動します。
- 左側のペインで、[Policies] 行の [+] ボタンをクリックします。
[Create policy] ダイアログで、[Select policy type] フィールドをクリックし、[Traffic Management] まで下にスクロールし、[SpikeArrest] を選択します。
必要に応じて、表示名と名前を変更できます。
完了したら、[Create] をクリックしてポリシーを作成します。
- 以上で Spike Arrest ポリシーが作成されたので、それを PreFlow のステップに接続できます。これを行うには、左側のペインで [Proxy Endpoints] > [default] > [PreFlow] を選択します。
- ビジュアル エディタの右下にある [Response] ペインの [PreFlow] の横にある [+] ボタンをクリックします。
- [Add policy step] ダイアログで、[Spike Arrest] ポリシーを選択します。
[Add] をクリックしてポリシーを接続します。
Spike Arrest ポリシーが [Response] ペインに表示されます。
プロキシの次の XML コードがテキスト エディタに表示されます。
<ProxyEndpoint name="default"> <PreFlow name="PreFlow"> <Request/> <Response> <Step>< <Name>SA-</Name> </Step> </Response> </PreFlow> <Flows/> <PostFlow name="PostFlow"> <Request/> <Response/> </PostFlow> <HTTPProxyConnection> <BasePath>/myproxy</BasePath> </HTTPProxyConnection> <RouteRule name="default"> <TargetEndpoint>default</TargetEndpoint> </RouteRule> </ProxyEndpoint>
フローからのポリシーの接続解除
フローからポリシーを接続解除するには、フローの横にあるその他メニューをクリックし、[Delete policy step] を選択します。
従来バージョンのプロキシ エディタ
ポリシーをフローに接続するには:
- API プロキシを選択し、[Develop] ビューに移動します。
- API プロキシ エディタの [Navigation] ペインで、ポリシーを接続するフローを選択します。
たとえば、次の図ではデフォルトの API プロキシ エンドポイント用に PreFlow フローが選択されています。
- [Design] ビューで、リクエストまたはレスポンス フローに関連付けられた [+Step] をクリックして、ポリシーを接続します。例:
[Add Step] ダイアログが開き、ポリシーの分類リストが表示されます。
- スクロールし、選択されたフローに接続するポリシーのタイプを選択します。
- 次のフィールドを変更します。
-
Display Name: ポリシーの一意の表示名。UI でデフォルトの名前が生成されますが、わかりやすい名前をポリシーに付けることをおすすめします。そうすることで、組織の他のデベロッパーが、ポリシーの目的を容易に理解できます。
-
Name: ポリシーの一意の名前。次の点を除き、ポリシー名は表示名と一致します。
-
スペースはダッシュに置き換えられます。
-
連続するダッシュは 1 つのダッシュに置き換えられます。
-
ダッシュ、アンダースコア、スペース(前述のとおり置き換えられる)を除く、英数字以外の文字(ポンド記号、パーセント記号、アンパサンドなど)は削除されます。
-
-
- [Add] をクリックします。
選択されたフローにポリシーが接続されます。
ポリシーが接続されると、フローの [Designer] ビュー(この例ではデフォルトのプロキシ エンドポイントの PreFlow)と、ナビゲーション ペインの [Policies] リストにポリシーが表示されます。[Designer] ビューの下に、新しく接続されたポリシーの XML を表示する [Code] ビューが表示されます。Apigee は、適切なデフォルト値のセットを含むポリシーのインスタンスを生成します。
フローに接続せずにポリシーを追加する
フローに接続せずにポリシーを追加すると、障害の処理は容易になります。この操作を行うには、[Navigator] ビューの [Policies] バーにある [+] をクリックして、[Add Policy] ダイアログを開き、ポリシーを追加します(前のセクションのステップ 4~6 を参照)。
フローに接続されていないポリシーの場合、前の図のように、API キーメッセージ ポリシーの横にある [Policies] リストに接続解除アイコンが表示されます。
ポリシーを作成したら、[Policies] リストからドラッグして [Designer] ビューの目的のフローにドロップすると、ポリシーをフローに接続できます。
フローからのポリシーの接続解除
フローからポリシーを接続解除するには、そのフローを選択します。フローの [Designer] ビューで、マウスポインタをポリシー アイコンに重ねます。丸で囲まれた X を含むアイコンをクリックします。
ポリシー インスタンスの削除
ポリシー インスタンスを削除するには、[Navigator] ビューでマウスポインタをポリシーのエントリに重ねます。丸で囲まれた [X] アイコン(エントリの右側に表示されます)をクリックします。
UI でのポリシーの構成
この UI で生成されるポリシー インスタンスでは、一般的な設定に適切なデフォルト値が適用されます。要件によっては、この設定を変更する必要があります。
次に例を示します。<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <SpikeArrest async="false" continueOnError="false" enabled="true" name="spikearrest-1"> <DisplayName>SpikeArrest-1</DisplayName> <FaultRules/> <Properties/> <Identifier ref="request.header.some-header-name"/> <MessageWeight ref="request.header.weight"/> <Rate>30ps</Rate> </SpikeArrest>
ポリシーを構成するには、[Code] ビューで XML 構成を直接編集します。たとえば、Spike Arrest ポリシーのピーク メッセージ レートは当初 1 秒あたり 30 メッセージに設定されています。このピークレートを変更するには、ポリシーの XML で <Rate
> 要素の値を変更します。ポリシーの構成の詳細については、ポリシー リファレンスをご覧ください。
[Code] ビューに、ポリシーのカットアンドペーストを行うこともできます。GitHub で入手可能なサンプルのポリシーを再利用するには、これが便利な方法です。
[Code] ビューでポリシー定義を変更すると、この変更は [Property Inspector] に反映されます。その逆の場合も同様です。[Property Inspector] に変更を加えると、[Code] ビューの XML に反映されます。
このトピックで使用する Quota ポリシーに関するドキュメントについては、Quota ポリシーをご覧ください。