Edge Microgateway のよくある質問

始めに

Edge Microgateway をインストールするにはどうすればよいですか?

Edge Microgateway のインストールをご覧ください。

Edge Microgateway を実行するにはどうすればよいですか?

Edge Microgateway の設定と構成をご覧ください。

Microgateway を実行するにはデータベースが必要ですか?

Edge Microgateway を介してプロキシされる API は、ターゲット サービスの一部として実行されているデータベースとやり取りする場合があります。ただし Edge Microgateway は、データベースまたはバックエンドのデータストアとは独立して動作します。

操作

Edge でどのような変更が行われた場合に Edge Microgateway を再起動する必要がありますか?

Edge Microgateway は、Microgateway 対応プロキシ、プロダクト、デベロッパー アプリの変更など、Apigee Edge で行われた変更を自動的にポーリングします。デフォルトのポーリング間隔は 600 秒ですが、config_change_poll_interval 構成設定を使用して、この間隔を変更できます。edgemicro 属性をご覧ください。

ポーリング間隔を待たない場合は、edgemicro reload コマンドを使用して最新の変更を選択します。Microgateway クラスタの再読み込みをご覧ください。

Edge 上にデプロイされたプロキシと Edge Microgateway 上のプロキシを区別するにはどうすればよいですか?

Edge Microgateway を構成すると、Apigee Edge 上にデプロイされている Microgateway 対応プロキシのリストが Edge Microgateway のローカル設定にダウンロードされます。Microgateway 対応プロキシとは、名前に接頭辞 edgemicro_ が付いているプロキシです。

Edge Microgateway でロギングを行うにはどのような方法がありますか?

Edge Microgateway には組み込みのロギング機能があります。詳細については、ログファイルの管理をご覧ください。

カスタム プラグインを作成して、Edge Microgateway でサードパーティのロギング サービスを使用することもできます。Edge Microgateway の動作方法のため、Apigee Edge Message Logging ポリシーを使用して Edge Microgateway のメッセージを記録することはできません。

Edge Microgateway のインスタンス間で Key-Secret の組み合わせを再利用できますか?

Microgateway インスタンスの組織と環境が同じであれば、構成時に生成される Key-Secret ペアを再利用できます。

本番環境で起動するように Edge Microgateway を構成するにはどうすればよいですか?

EDGEMICRO_KEYEDGEMICRO_SECRETEDGEMICRO_ORGEDGEMICRO_ENV などのスタートアップ コマンド パラメータ用の環境変数を設定できます。これらの変数(およびその他の変数)を使用すれば、Edge Microgateway を単一のコマンド edgemicro start で開始することができます。環境変数の設定もご覧ください。

Edge Microgateway でカスタム プロダクトまたはデベロッパー アプリ属性を使用できますか?

いいえ。デフォルトでは、Edge Microgateway は基本的なルーティングとセキュリティ関連の属性に対してのみ動作します。ただし、回避策として、次のような選択肢もあります。

  1. Edge Microgateway によって Apigee Edge にデプロイされる edgemicro-auth プロキシに、カスタム属性を追加します。このような属性は、API キーまたは OAuth トークン セキュリティを使用する場合に利用できます。

  2. これらの属性に対して動作するように OAuth プラグインを変更します。

デプロイ

ターゲット サービスが実行されているサーバーと同じサーバーに Edge Microgateway をデプロイできますか?

はい。Edge Microgateway は、ターゲット サービスが実行されているマシンを含め、ターゲット サービスの近くで実行可能な軽量プロセスです。

既存の Edge プロキシ バンドルを Edge Microgateway デプロイとしてデプロイできますか?

いいえ。Edge Microgateway 対応プロキシは、特定の要件を持っており、通常の Edge プロキシのすべての機能をサポートしているわけではありません。パート 2: Apigee Edge でエンティティを作成するをご覧ください。

同じ API プロキシの Edge プロキシ バンドル デプロイと Edge Microgateway デプロイ間のフェイルオーバーを有効にできますか?

いいえ。Edge Microgateway は、Apigee Edge 上の Microgateway 以外の API プロキシ デプロイを認識しません。

可用性の高い Edge Microgateway デプロイモデルとはどのようなものですか?

NGINX をロードバランサとして使用して Edge Microgateway を実行する方法については、Apigee Edge Microgateway と NGINX による API の管理をご覧ください。

Edge Microgateway で使用できるロードバランサはどれですか?

Edge Microgateway はどのロードバランサとも連携できます。

デプロイ可能な Edge Microgateway プロキシの数に制限はありますか?

通常の Edge プロキシに指定されるプロダクト構成制限をご覧ください。Apigee Edge 組織および環境にデプロイし、Edge Microgateway を介して呼び出すことが可能な Microgateway 対応プロキシの数は、それらの同じ制限に従う必要があります。

Edge Microgateway のデプロイメントを特定の組織および環境に関連付けることはできますか?

Edge Microgateway のインスタンスを構成するときに、このインスタンスを Edge の特定の Edge 組織および環境に関連付ける必要があります。

Edge Microgateway のデプロイメントを特定のリージョンに関連付けることはできますか(マルチリージョン カスタマーの場合)?

Edge Microgateway は、Apigee Edge とのやり取りに最適なリージョンを自動的に選択します。サービス対象のリージョンごとに Edge Microgateway インスタンスをデプロイできます。

管理

Edge Microgateway を構成してデプロイするには、組織管理者であることが必要ですか?

はい。Edge Microgateway を構成してデプロイするには、組織管理者認証情報が必要です。

Edge Microgateway を実行するには、組織管理者であることが必要ですか?

いいえ。Edge Microgateway は Node.js アプリケーションであり、指定されたマシンでこのようなアプリケーションを実行する権限があれば誰でも実行できます。

組織ユーザーであれば誰でも Edge Microgateway を使用できますか?

Edge Microgateway を介して API 呼び出しを行うために Apigee Edge の組織ユーザーである必要はありません。ただし、Edge にデプロイする Edge Microgateway 対応プロキシを作成または変更するには、組織レベルの権限が必要です。

パフォーマンス

Edge Microgateway を使用する際のパフォーマンス上の考慮事項として何がありますか?

Edge Microgateway をターゲット アプリケーションと並べて実行する場合は、サーバーの容量が十分であることを確認してください。

Edge Microgateway を大規模に実行するためのベスト プラクティスは何ですか?

Apigee では、NGINX などのロードバランサが前面に配置された複数のサーバー上で Edge Microgateway の複数のインスタンスを実行することを推奨しています。Apigee コミュニティの Apigee Edge Microgateway と NGINX による API の管理垂直 / 水平スケーリングもご覧ください。

Edge Microgateway の TPS はデフォルトでどの程度ですか?また、Microgateway インスタンスに必要なハードウェア要件は何ですか?

ハードウェア要件と TPS 測定結果を Edge Microgateway で評価することは困難です。これは、Edge Microgateway の調整、プラグインの使用、カスタム プラグイン、およびその他の構成(TLS など)の組み合わせであるセットアップに依存します。Apigee では、項目の組み合わせを考慮し、特定のセットアップでパフォーマンス テストを実施することを推奨しています。

Private Cloud デプロイ

Edge Microgateway は Edge for Private Cloud と連動しますか?

はい。詳細については、Apigee Private Cloud 構成手順をご覧ください。

プラグイン

Edge Microgateway ではどのように割り当てが適用されますか?

オプションで Edge Microgateway のインスタンスに割り当てプラグインを追加できます。詳細については、Quota プラグラインの使用をご覧ください。

Edge Microgateway では Spike Arrest がどのように適用されますか?

オプションで Edge Microgateway のインスタンスに Spike Arrest プラグインを追加できます。詳細については、Spike Arrest プラグインの使用をご覧ください。

Edge Microgateway に対して Node.js 以外にプラグインを記述する方法はありますか?

いいえ。プラグインは Node.js で記述する必要があります。

Edge Microgateway で Edge に Analytics データをアップロードできない場合はどうなりますか?

Edge Microgateway にはメモリ内バッファがあります。バッファがいっぱいになると、より古いペイロードが破棄され、API トラフィックがスムーズに流れるようになります。

Edge Microgateway にポリシーを追加できますか?

通常の Apigee Edge ポリシーを Apigee Edge の「Microgateway 対応」プロキシに接続しても無視されます。代わりに、Edge Microgateway は、プラグインを使用して、割り当て、Spike Arrest、API キー セキュリティ、OAuth2 セキュリティなどの Edge のポリシーと同様の機能を提供します。Write カスタム プラグインを追加することもできます。プラグインを使用するカスタム プラグインを開発するをご覧ください。

Apigee コミュニティの以下の投稿とブログで、追加のプラグインの使用例について説明されています。

セキュリティ

/products リソースを保護するにはどうすればよいですか?

概要

Edge Microgateway の構成時に、edgemicro-auth という API プロキシが Apigee Edge 上の組織と環境にデプロイされます。このプロキシによって、API プロダクトのリストを返す /products エンドポイントが公開されます。Edge Microgateway を 2018 年 10 月 5 日以前にインストールした場合、このエンドポイントを保護する手順を実施することをおすすめします。これは、レスポンスに、API プロダクトを作成および変更した Apigee 組織内のデベロッパーのメールアドレスが含まれるためです。

Edge Microgateway をアップグレードするか、または相互 TLS を構成することで、エンドポイントを保護できます。これら両方のオプションについて以下で説明します。

/products エンドポイントが保護されているかどうかを確認する

/products エンドポイントが保護されているかどうか不明な場合は、続行する前に、/products リソースが保護されていることを確認するに移動し、そこに示されている手順を実施してください。

オプション 1: Edge Microgateway をアップグレードする

Edge Microgateway を 2018 年 10 月 5 日以前にインストールした場合、最新バージョンの Edge Microgateway にアップグレードすることをおすすめします。インターネット接続を利用できる場合の Edge Microgateway のアップグレードに示す手順に従ってください。

現時点でアップグレードできない場合は、オプション 2 に進みます。

オプション 2: 相互 TLS を構成する

現時点で Edge Microgateway をアップグレードできない場合は、Edge Microgateway と edgemicro-auth プロキシ間の通信を相互 TLS(双方向 TLS とも呼ばれる)で保護することをおすすめします

  1. ファイル $HOME/.edgemicro/org-env-config.yaml を開きます。このファイルが見つからない場合は、Edge Microgateway のインストール場所をご覧ください。
  2. 以下の tlsOptions ブロックを org-env-config.yaml ファイルに追加して、Edge Microgateway と Apigee Edge 間の相互 TLS を有効にします。
    edge_config:
          bootstrap: >-
            https://domain/edgemicro/bootstrap/organization/org/environment/env
          jwt_public_key: 'https://domain/edgemicro-auth/publicKey'
          managementUri: 'https://api.enterprise.apigee.com'
          tlsOptions:
            agentOptions:
              requestCert: true
              cert: 'path/to/cert'
              key: 'path/to/key'
        

    例:

        tlsOptions:
          agentOptions:
            requestCert: true
            cert: '/Users/jdoe/twowayssl/ssl/client.key'
            key: '/Users/jdoe/twowayssl/ssl/ca.crt'

    以下の省略可能な agentOptions パラメータを含めることもできます。

    • ca: 認証局へのパスを指定します。
    • pfx: 証明書とキーの代わりに p12/pfx ファイルを使用するかどうかを指定します。
    • passphrase: pfx ファイルのパスフレーズ。
    • ciphers: TLS 暗号を指定します。
  3. edgemicro-auth プロキシがデプロイされている仮想ホストで、相互 TLS が有効になっていることを確認します。詳細については、Apigee Edge ドキュメントの双方向 TLS の仮想ホストの定義をご覧ください。

    次のスクリーンショットは、Apigee Edge UI で仮想ホストの相互 TLS を有効にする方法を示しています。

  4. Edge UI で edgemicro-auth API プロキシを参照し、プロキシ構成に適切な仮想ホストが指定されていることを確認します。たとえば、mutualtls という TLS 対応の仮想ホストが作成されている場合、プロキシの HTTPProxyConnection スタンザは次のようになります。

        <HTTPProxyConnection>
            <BasePath>/edgemicro-auth</BasePath>
            <Properties/>
            <VirtualHost>mutualtls</VirtualHost>
        </HTTPProxyConnection>
        

/products リソースが保護されていることを確認する

ここでは、/products リソースが保護されているかどうかをテストして確認する方法について説明します。このテストは、リソースを保護するための手順(オプション 1 またはオプション 2)を完了した後で行うことが重要です。たとえば、次のように cURL を使用して行うことができます。

curl -v https://your_domain/edgemicro-auth/products

次のいずれかのようなレスポンスが表示された場合、/products エンドポイントは保護されています。

{
      "error":"unauthorized",
      "error_description": "authentication failed"
    }

または

curl: (35) error:1408F10B:SSL routines:ssl3_get_record:wrong version number

次のようなレスポンスが表示された場合、/products リソースは保護されておらず、デベロッパーのメールが公開されている可能性があります。

    {
       "apiProduct":[
          {
             "apiResources":[
                "/",
                "/**"
             ],
             "approvalType":"auto",
             "attributes":[

             ],
             "createdAt":1537374680948,
             "createdBy":"jdoe@foo.com",
             "description":"",
             "displayName":"mock",
             "environments":[
                "test"
             ],
             "lastModifiedAt":1537374680948,
             "lastModifiedBy":"test@test.com",
             "name":"mock",
             "proxies":[
                "edgemicro-auth",
                "edgemicro_mock"
             ],
             "quota":"null",
             "quotaInterval":"null",
             "quotaTimeUnit":"null",
             "scopes":[
                ""
             ]
          }
       ]
    }

また、HTTP 仮想ホストをテストすることもおすすめします。

例:

curl -v http://your_domain/edgemicro-auth/products

cURL 呼び出しで API プロダクトのリストが返される場合、デベロッパーのメールが公開されている可能性があります。この非 TLS 仮想ホストでエンドポイントを公開したくない場合は、必ず edgemicro-auth HTTPProxyConnection 構成からこの仮想ホストを削除してください。

リソースを保護するには、以下のオプションのいずれか 1 つを使用します。

期限切れのアクセス トークンを更新するにはどうすればよいですか?

現在、特定の Edge Microgateway インスタンスの JWT トークンを更新することはできません。

回避策

各 JWT トークンには、トークンの有効期限を示す exp 属性があります。アプリで有効期限を計算し、edgemicro-auth トークン エンドポイントに対して直接 API 呼び出しを行うことで、新しいトークンを要求できます。たとえば、次のような API 呼び出しを行うことができます。

POST https: //{your_org}-{your_env}.apigee.net/edgemicro-auth/token

... 次のような JSON 本文を使用します。

{ "client_id": {your_id}, "client_secret": {your_secret}, "grant_type": "client_credentials" }

関連情報

Edge Microgateway ドキュメントの「OAuth トークンまたは API キーを使用して API を保護する

Apigee コミュニティの「期限切れの署名なしトークンを更新するための処理とは

Windows での SSL の構成

Windows で Edge Microgateway を実行する場合は、OpenSSL がマシンにインストールされ、PATH に追加されている必要があります。すべての Windows マシンに OpenSSL が付属しているわけではありません。OpenSSL のダウンロードとインストールの詳細については、OpenSSL のドキュメントをご覧ください。

Edge Micro 対応プロキシに関連付けられた API プロダクトを使用する API リソースをホワイトリストに登録できますか?

現在、ベースパスをチェックするだけで、特定の OAuth トークンに関連付けられている API プロダクトに対し、API が承認されるかどうかが決定されています。

例:

1. ベースパスとターゲットを指定して edgemicro_ 接頭辞付きのプロキシを作成します。

2. このプロキシをプロダクトに追加します。これを仮に edgemicro-prod1 とします。

3. Edge Microgateway を介した API 呼び出しが API キーまたは OAuth トークンを使用して行われた場合、Edge Microgateway は、API のベースパスが、そのキーまたはトークンに対して承認されているプロダクトのリストに承認されている edgemicro_* プロキシのベースパスと一致するかどうかを確認します。

Apigee コミュニティのホワイトリストに関するこの投稿もご覧ください。

Edge Microgateway でカスタム SSL 証明書を使用できますか?

現在、デフォルトの Apigee SSL 証明書のみがサポートされています。カスタム SSL 証明書は現時点ではサポートされていません。

回避策

カスタム(Apigee のデフォルト以外)の SSL 証明書を使用する場合、次のオプションを使用できます。

  • 非 SSL の jwt_public_key エンドポイントを使用します。http://{org}-{env}.apigee.net/edgemicro-auth/publicKey を使用するように Edge Microgateway 構成ファイルを変更します。または、

  • Edge Microgateway を開始する前に、環境変数 export NODE_TLS_REJECT_UNAUTHORIZED ="0" を設定します。

Apigee コミュニティの SSL 証明書に関する Edge Micro インストール エラーを確認するもご覧ください。

Edge Microgateway での組織管理者アカウントの使用を避けることはできますか?

Edge Microgateway 構成スクリプトは Edge に edgemicro-auth プロキシをデプロイしますが、このデプロイには、組織管理者の認証情報が必要になります。

ただし、最初のデプロイ後、残りの設定と構成を行う際には、組織管理者の認証情報は必要ありません。組織管理者認証情報に関するこのコミュニティ投稿もご覧ください。

Edge Microgateway で独自の OAuth トークンを使用できますか?

独自のトークンは使用できますが、最初に Edge Microgateway の組み込みの認可をオフにする必要があります。方法は次のとおりです。

  1. Edge Microgateway の構成ファイルを開きます。

  2. 次のように、2 つの OAuth 設定を true に変更します。

        oauth:
            allowNoAuthorization: true
            allowInvalidAuthorization: true
        

Edge Microgateway の起動時にアクセス拒否エラーが発生する

次のコマンドで Edge Microgateway を起動したときに、アクセス拒否エラーが発生することがあります。

edgemicro start -o [org] -e [env] -k [key] -s [secret]

この場合、なんらかの理由でキーとシークレットが有効でない可能性があります。最善の対処方法は、edgemicro genkeys コマンドを使用してキーとシークレットを再生成することです。

テストとデバッグ

負荷テスト中に発生する「too many file open」エラーを防ぐにはどうすればよいですか?

場合によっては、オープンしているファイル接続の数が多くなりすぎたことが原因で Edge Micro がクラッシュすることがあります。デフォルトのロギングには、Microgateway を介して受信するトランザクションと発信するトランザクション用に 2 つの HTTP 接続が必要です。

テストやベンチマークを目的とする場合は、システムの ulimit コマンドを unlimited に設定すること(ulimit -n unlimited)をおすすめします。Apigee コミュニティの読み込みテスト中の Edge Microgateway エラーもご覧ください。

迅速な開発とデバッグのためのヒント

Edge Microgateway 用のプラグインを開発している場合、迅速な開発をサポートする機能が限られていることに気づくかもしまれせん。

現時点でのヒントは次のとおりです。

  • Edge Microgateway の起動については、環境変数 EDGEMICRO_KEY と EDGEMICRO_SECRET を Microgateway スタートアップ コマンドで必要な Key-Secret ペアに設定できます。これにより、コマンドラインで Key-Secret を入力せずに Edge Microgateway を起動できます。Edge Microgateway ドキュメントの環境変数の設定もご覧ください。

  • DEBUG モード(DEBUG=* edgemicro start -o [org] -e [env] -k [key] -s [secret])で Edge Microgateway を起動して、コマンド ターミナルで追加の出力を確認します。

ビジネスとライセンス

Apigee-127 サポートモデルと Edge Microgateway サポートモデルはどのような関係ですか?

Apigee-127 は、オープンソース モデルでサポートされるオープンソース ソフトウェア プロジェクトです。つまり、なんらかの修正を行おうとする場合は、GitHub プロジェクトで問題を作成し、pull リクエストを行うことができます。Apigee-127 に Apigee とのライセンス契約は不要で、含まれてもいません。

一方、Edge Microgateway は、Apigee によってサポートされる Apigee カスタマー向けのエンタープライズ プロダクトです。つまり、Apigee カスタマーは Apigee サポート ポータルを使用して、サポート チケット、機能リクエスト、バグレポートを作成できます。

注: Edge Microgateway は Apigee-127 に基づくものではありません。異なる目標を持つ完全に別々のプロジェクトです。唯一類似している点は、両方とも Node.js で実装されていることです。他の共通性を仮定してはいけません。