ProxyEndpoint または TargetEndpoint フローへのポリシーの接続

このページの内容は ApigeeApigee ハイブリッドに該当します。

Apigee Edge のドキュメントを表示する。

ポリシーは、フローに接続されるまで実行されません。Step 構成で Policy に名前を付けて、Policy のアタッチメントを作成できます。

API プロキシの動作には、アタッチメント ポイントの選択が重要になります。たとえば、Quota ポリシーをレスポンス フローに接続すると、リクエスト メッセージがバックエンド サービスに送信された後、割り当てが強制されるようになります。これでは、Quota ポリシーを適用する目的が果たされません。したがって、Quota ポリシーは処理 Step としてリクエスト フローに接続する必要があります。

ポリシー アタッチメントの形式:

<Step>
    <Name>{policy_name}</Name>
</Step>

次に例を示します。

<Step>
    <Name>QuotaPolicy</Name>
</Step>

ProxyEndpoint 構成または TargetEndpoint 構成で、Step 構成を適切なリクエスト Flow 要素またはレスポンス Flow 要素に追加することで、ポリシーがフローに接続されます。

ポリシーは、リクエスト フローまたはレスポンス フローに接続できます。リクエスト Flow とレスポンス Flow は、さらに PreFlow と PostFlow に分割されます。

以下の例では、ポリシーのアタッチメントがない最小限の ProxyEndpoint 構成を示します。これは単に(内向きの)HTTPProxyConnection と RouteRule を定義しています。

<ProxyEndpoint name="default">
    <HTTPProxyConnection>
        <BasePath>/weather</BasePath>
        <VirtualHost>default</VirtualHost>
    </HTTPProxyConnection>
    <RouteRule name="default">
        <TargetEndpoint>default</TargetEndpoint>
    </RouteRule>
</ProxyEndpoint>

API プロキシが他の処理を実行する前に、ProxyEndpoint が Quota ポリシーを(処理 Step として)強制するように、この構成を変更する必要があります。デベロッパーが Quota を超えた場合、それ以上のリクエストでコンピューティング リソースが浪費されることは望ましくありません。

この構成を強制するには、次のように、処理 Step をリクエスト PreFlow に接続します。

<ProxyEndpoint name="default">
  <PreFlow>
    <Request>
      <Step><Name>QuotaPolicy</Name></Step>
    </Request>
  </PreFlow>
  <HTTPProxyConnection> 
    <BasePath>/weather</BasePath> 
    <VirtualHost>default</VirtualHost> 
  </HTTPProxyConnection> 
  <RouteRule name="default"> 
    <TargetEndpoint>default</TargetEndpoint> 
  </RouteRule> 
</ProxyEndpoint>

場合によっては、ProxyEndpoint でその他の初期処理を実行してからポリシーを実行したい状況もあるでしょう。たとえば、PreFlow で Quota を確認し、Quota の確認後に、JSON から XML にリクエストを変換するなど、別の一連の処理を実行する場合です。このようにする場合は、PostFlow リクエストパスにポリシーを接続します。以下に PostFlow アタッチメントのサンプルのリクエストを示します。このポリシーは、PreFlow(および条件付きフロー)の全ポリシーが実行された後、リクエスト メッセージで実行されます。

<PostFlow>
  <Request>
    <Step><Name>JSONtoXMLPolicy</Name></Step>
  </Request>
</PostFlow>

以下に PostFlow アタッチメントのサンプルのレスポンスを示します。このポリシーは、レスポンス メッセージで実行されます。ProxyEndpoint レスポンスの PostFlow は、レスポンスがリクエスト元のクライアント アプリに返される前の最後の処理フェーズです。

<PostFlow>
  <Response>
    <Step><Name>XMLtoJSONPolicy</Name></Step>
  </Response>
</PostFlow>