Send Docs Feedback

Note: Most user interface tasks can be performed in Edge Classic or the New Edge experience. For an overview, getting started topics, and release notes specific to the New Edge experience, see the docs.

Chaining API proxies together

You can specify that one proxy is the target endpoint of another, effectively connecting the two proxies in a proxy chain. Chaining proxies in this way can help you avoid a network hop, and so improve overall performance.

Proxy chaining provides one way to reuse proxies. For another way, in which you develop components that are expressly designed to be reused, be sure to see Reusable shared flows.

With proxy chaining, you specify that one proxy is the local target endpoint of the other. Rather than using the HTTPTargetConnection element to make a call to the second proxy, you use the LocalTargetConnection element.

<LocalTargetConnection>
    <APIProxy>myproxy2</APIProxy>
    <ProxyEndpoint>default</ProxyEndpoint>
</LocalTargetConnection>

You might find proxy chaining useful when you have a proxy that offers some discrete low-level functionality that other proxies will consume. For example, a proxy that exposes create/read/update/delete operations with a backend data store could be the target proxy for multiple other proxies that expose the data to clients.

この方法で接続するプロキシは、同じ組織 (organization) および環境 (environment) に存在する必要があります。接続しようとしているプロキシがこのスコープから外れている場合は、HTTPTargetConnection 要素を使用して、外部リソースとして接続する方法を検討してください (「API proxy configuration reference」を参照)。

How proxy chaining works

Proxy chaining uses a local connection to minimize network overhead when calling one proxy from another. This local connection is more efficient because it bypasses network features such as load balancers, routers, and message processors.

The following illustrates the difference between connecting proxies via HTTPTargetConnection and LocalTargetConnection (proxy chaining):

一方が他方のローカルターゲットエンドポイントになるように指定して、プロキシを接続します。プロキシ間のローカル接続は以下の 2 通りの方法で作成できます。

  • ターゲットプロキシの名前と ProxyEndpoint 名を指定する
  • ターゲットプロキシエンドポイントへのパスを指定する

以下に説明するように、TargetEndpoint 構成内で LocalTargetConnection 要素を使用してターゲットプロキシを接続します。

When chaining API proxies, take care to avoid "infinite loop" recursive callouts back into the same API proxy, which could result in system overload.

プロキシ名によるプロキシの接続

ターゲットプロキシは名前によって指定できます。接続をゼロから作成し、プロキシをまとめて開発する場合、この方法が最も便利である可能性があります。名前がわからない場合 (または名前が変わる可能性がある場合) は、以下で説明するような、ターゲットプロキシのエンドポイントパスへの接続を検討してください。

名前によってターゲットプロキシに接続する場合、プロキシの名前と ProxyEndpoint の名前を指定します。

次の例では、data-manager と呼ばれるターゲットプロキシを data-manager によってエクスポーズされる ProxyEndpoint 名とともに指定しています。リファレンス情報については、「API proxy configuration reference」を参照してください。

<TargetEndpoint name="datamanager">
    <PreFlow name="PreFlow">
        <!-- PreFlow policies -->
    </PreFlow>
    <PostFlow name="PostFlow">
        <!-- PostFlow policies -->
    </PostFlow>
    <LocalTargetConnection>
        <APIProxy>data-manager</APIProxy>
        <ProxyEndpoint>default</ProxyEndpoint>
    </LocalTargetConnection>
</TargetEndpoint>

パスによるプロキシの接続

ターゲットプロキシはそのエンドポイントパスによって指定できます。プロキシ名がわからない場合や、名前が変わる可能性がある場合は、この方法で指定できます。

プロキシがターゲットプロキシのコンシューマにすぎない場合 (自分で両方を開発するわけではない場合など)、パスは最も信頼できる接続方法です。例えば、接続するプロキシが他のチームによって開発、維持されている場合は、信頼できるエンドポイントパスを使用して接続できます。

次の例では、/v1/streetcarts/foodcarts/data-manager にあるターゲットプロキシを指定しています。ここで、ホストは現在のプロキシと同じであるものとします。リファレンス情報については、「API proxy configuration reference」を参照してください。

<TargetEndpoint name="datamanager">
    <PreFlow name="PreFlow">
        <!-- PreFlow policies -->
    </PreFlow>
    <PostFlow name="PostFlow">
        <!-- PostFlow policies -->
    </PostFlow>
    <LocalTargetConnection>
        <Path>/v1/streetcarts/foodcarts/data-manager</Path> 
    </LocalTargetConnection>
</TargetEndpoint>

管理コンソールによるプロキシの接続

Edge 管理コンソールを使用して、プロキシチェーニング接続を作成できます。

  1. ターゲットプロキシを利用するプロキシを開きます。
  2. 「Navigator」で、「Target Endpoints」の横のプラス記号をクリックします。
  3. 「New Target Endpoint」ダイアログで、ターゲットエンドポイントの名前を入力します。
  4. 「Target Endpoint Name」ボックスで、以下のいずれかを選択します。
    • Proxy Chaining。組織および環境にすでにあるプロキシのリストから選択します。
      1. 「Proxy Name」ドロップダウンで、ターゲットプロキシを選択します。
      2. 「Proxy Endpoint」ボックスに、接続先のターゲットプロキシエンドポイントのパスを入力します。
    • Path Chaining/mypath/myproxy/myendpoint など、ターゲットプロキシのベースパスを入力します。
  5. 「Add」をクリックします。

Chained proxies, API products, and security

Proxy chaining is best for cases where both proxies are in the same API product. By default, both are available to clients. Apigee currently doesn't support bundling the second proxy in a separate API product that clients shouldn't have access to.

If your second proxy must be secured against direct client requests, consider adding logic to have your second proxy examine the IP address of the client. In the case of a call made via chaining, the IP address will be local. Your code can validate that it is local before allowing processing to continue. See the Access Control policy for one way to do this.

 

Help or comments?