Router または Message Processor に対する直接 API リクエストの作成方法

はじめに

トラブルシューティングを行うときに、Router や Message Processor などの Apigee コンポーネントに直接 API を実行する場合があります。この方法が必要になるのは、次のような場合です。

  • 特定の Apigee コンポーネント(Route / Message Processor)が原因で特定の API リクエストで断続的に発生する問題をデバッグする。
  • Apigee コンポーネントの特定のインスタンスでデバッグモードを有効にして、より詳しい診断情報を収集する。
  • 特定の Apigee コンポーネントが原因で発生した問題を除外する。
  • 新しいインスタンスの起動や再起動などの操作が及ぼす影響を確認する。

前提条件

  • API リクエストを実行する Router または Message Processor コンポーネントに直接アクセスする必要があります。
  • コンポーネントの特定のインスタンスに cURL ツールがインストールされている必要があります。
  • テストに使用する API リクエストが cURL 形式になっている必要があります。

    たとえば、次の curl コマンドを使用して、ローカルマシンから API プロキシにリクエストを送信します。

    curl https://myorg-test.mycompany.com/v1/customers -H 'Authorization: Bearer AxLqyU09GA10lrAiVRQCGXzMi9W2'
        
    curl https://myorg-test.mycompany.com/v1/customers
        

Apigee Router に対して API リクエストを直接実行する方法

シナリオ 1: Router を参照するホスト エイリアスへの API リクエスト

ホスト エイリアスの DNS エントリが Apigee Edge Router を参照するように構成されている場合(つまり、Elastic Load Balancer(ELB)がない場合)、次の curl コマンドを実行して、Router に直接 API リクエストを送信します。

  • 仮想ホストがポート 80 経由で保護されていない通信を行う場合

    curl -v --resolve HOST_ALIAS:80:127.0.0.1 http://HOST_ALIAS/PROXY_BASE_PATH/ -H 'HEADER: VALUE'
        

    例:

    curl -v --resolve myorg-test.mycompany.com:80:127.0.0.1 http://myorg-test.mycompany.com/v1/customers -H 'Authorization: Bearer AxLqyU09GA10lrAiVRQCGXzMi9W2'
        
  • Router のポート 443 で SSL を終了するように仮想ホストが構成されている場合

    curl -v --resolve HOST_ALIAS:443:127.0.0.1 https://HOST_ALIAS/PROXY_BASE_PATH/ -H 'HEADER: VALUE'
        

    例:

    curl -v --resolve myorg-test.mycompany.com:443:127.0.0.1 https://myorg-test.mycompany.com/v1/customers -H 'Authorization: Bearer AxLqyU09GA10lrAiVRQCGXzMi9W2'
        

シナリオ 2: ELB を参照するホスト エイリアスへの API リクエスト

ホスト エイリアスの DNS エントリが Elastic Load Balancer(ELB)を参照するように構成されている場合、次の curl コマンドを実行して、Router に直接 API リクエストを送信します。

  • 仮想ホストがポート 80 経由で保護されていない通信を行う場合

    curl -v --resolve HOST_ALIAS:80:127.0.0.1 http://HOST_ALIAS/PROXY_BASE_PATH/ -H 'HEADER: VALUE'
        

    例:

    curl -v --resolve myorg-test.mycompany.com:80:127.0.0.1 http://myorg-test.mycompany.com/v1/customers -H 'Authorization: Bearer AxLqyU09GA10lrAiVRQCGXzMi9W2'
        
  • 仮想ホストで上位ポートが構成され、Apigee Router の前面のロードバランサで SSL が終了する場合

    curl -v --resolve HOST_ALIAS:PORT_NUMBER:127.0.0.1 http:/HOST_ALIAS:PORT_NUMBER/PROXY_BASE_PATH/ -H 'HEADER: VALUE'
        

    例:

    curl -v --resolve myorg-test.mycompany.com:19001:127.0.0.1 http://myorg-test.mycompany.com/v1/customers -H 'authorization: Bearer AxLqyU09GA10lrAiVRQCGXzMi9W2'
        
  • 仮想ホストで上位ポートが構成され、Apigee Router で SSL が終了する場合

    あるいは、Apigee Router に対して TCP パススルーを使用するように、ロードバランサが構成されている場合。

    curl -v --resolve HOST_ALIAS:PORT_NUMBER:127.0.0.1 https:/HOST_ALIAS:PORT_NUMBER/PROXY_BASE_PATH/ -H 'HEADER: VALUE'
        

    例:

    curl -v --resolve myorg-test.mycompany.com:19001:127.0.0.1 https://myorg-test.mycompany.com/v1/customers -H 'authorization: Bearer AxLqyU09GA10lrAiVRQCGXzMi9W2'
        

Apigee Message Processor に対してリクエストを直接実行する方法

シナリオ 1: API リクエストをデフォルトのポート 8998 経由で Message Processor に送信する

Message Processor が Apigee Router からのトラフィックをデフォルトでリッスンするポートは 8998 です。このポートが変更されていない場合、以下の例では、特定の Message Processor インスタンスのこのポートにトラフィックを直接送信する必要があります。URL http://INTERNAL_IP_OF_MP:8998 にヘッダー X-Apigee.Host と一緒に curl リクエストを送信する必要があります。このヘッダーには、仮想ホストで使用されているポート名を含むホスト名を指定します。リクエストの例を 3 つ挙げます。

  • Router で SSL を終了するように仮想ホストが構成されている場合

    curl -v http://INTERNAL_IP_OF_MP:8998/PROXY_BASE_PATH/ -H 'HEADER: VALUE' -H 'X-Apigee.Host: HOST_ALIAS:443'
        

    例:

    curl -v http://10.10.53.115:8998/v1/customers -H 'Authorization: Bearer AxLqyU09GA10lrAiVRQCGXzMi9W2' -H 'X-Apigee.Host: myorg-test.mycompany.com:443'
        
  • 仮想ホストで上位ポートが構成され、ロードバランサまたは Apigee Router で SSL が終了する場合

    curl -v http://INTERNAL_IP_OF_MP:8998/PROXY_BASE_PATH/ -H 'HEADER: VALUE' -H 'X-Apigee.Host: HOST_ALIAS:PORT_NUMBER'
        

    例:

    curl -v http://10.10.53.115:8998/v1/customers -H 'Authorization: Bearer AxLqyU09GA10lrAiVRQCGXzMi9W2' -H 'X-Apigee.Host: myorg-test.mycompany.com:19001'
        
  • 仮想ホストでデフォルトの HTTP ポート 80 が構成されている場合

    curl -v http://INTERNAL_IP_OF_MP:8998/PROXY_BASE_PATH/ -H 'HEADER: VALUE' -H 'X-Apigee.Host: HOST_ALIAS:80'
        

    例:

    curl -v http://10.10.53.115:8998/v1/customers -H 'Authorization: Bearer AxLqyU09GA10lrAiVRQCGXzMi9W2' -H 'X-Apigee.Host: myorg-test.mycompany.com:80'
        

シナリオ 2: API リクエストを SSL ポート 8443 経由で Message Processor に送信する

Router と Message Processor の間で SSL 通信が構成されている場合があります。以降の例では、Apigee のドキュメントで推奨されているポート 8443 を使用します。

  • Router で SSL を終了するように仮想ホストが構成されている場合

    curl -v -k https://INTERNAL_IP_OF_MP:8443/PROXY_BASE_PATH/ -H 'HEADER: VALUE' -H 'X-Apigee.Host: HOST_ALIAS:443'
        

    例:

    curl -v https://10.10.53.115:8443/v1/customers -H 'Authorization: Bearer AxLqyU09GA10lrAiVRQCGXzMi9W2' -H 'X-Apigee.Host: myorg-test.mycompany.com:80'
        
  • ロードバランサで SSL を終了するように仮想ホストが構成され、トラフィックが Router の上位ポートに転送される場合

    curl -v https://INTERNAL_IP_OF_MP:8443/PROXY_BASE_PATH/ -H 'HEADER: VALUE' -H 'X-Apigee.Host: HOST_ALIAS:PORT_NUMBER'
        

    例:

    curl -v https://10.10.53.115:8443/v1/customers -H 'Authorization: Bearer AxLqyU09GA10lrAiVRQCGXzMi9W2' -H 'X-Apigee.Host: myorg-test.mycompany.com:19001'