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.

スタンドアロン Node.js アプリの展開

このトピックでは、Node.js アプリケーションをローカルシステムから Apigee Edge に展開する方法について説明します。その中で、apigeetool というコマンドラインツールを使用して Node.js アプリケーションを Apigee Edge に展開する方法を見ていきます。

Apigee Edge への Node.js コードの展開について

既存の Node.js API アプリケーションを、依存する Node.js モジュールもすべて含めてローカルシステムから Apigee Edge に展開するのに、apigeetool というコマンドラインツールを使用できます。このユーティリティは、アプリケーションとその依存ファイルを 1 つの API プロキシにまとめて Edge に展開します。

例えば、Express を使用して Web アプリケーションを Node.js に作成しているとします。このアプリケーションは、HTTP リクエストを待機し、受信したリクエストを処理し、データを返す、などする HTTP サーバーとして動作します。apigeetool を使用して Node.js アプリケーションを Edge に展開すると、アプリケーションがプロキシにラップされ、Edge プラットフォームのコンテキスト内で実行されます。これにより、アプリケーションを新しいプロキシ URL 経由で呼び出せるようになり、OAuth によるセキュリティ保護、クォータポリシー、脅威保護ポリシー、条件フロー、キャッシュ処理、など多数の標準 Edge 機能による「装飾」を通じて付加価値を付けられます。

apigeetool による処理内容

deploynodeapp オプションを指定して実行された apigeetool は、以下の処理を行います。

  • API プロキシ構成バンドルを生成して、Node.js アプリケーションを取り込みます。
  • Node.js  アプリケーションを、NPM (Node Packaged Modules) でインストールされた任意の Node.js パッケージと併せて、パッケージ化します。
  • API プロキシ構成バンドルを、Apigee Edge 上の指定された組織 (organization) に、Edge 管理 API を使用して読み込みます。
  • API プロキシを環境に展開します。
  • Node.js アプリケーションを Apigee Edge 上で実行し、ネットワーク経由で利用できるようにします。

apigeetool を使用するための準備

始める前に、apigeetool ユーティリティをインストールする必要があります。

apigeetool は、npm を使用するか、または GitHub からコードをクローン化およびリンクすることで、インストールできます。 

npm でのインストール

apigeetool モジュールとその依存ファイルは Node.js 用に設計されており、npm で以下のコマンドを使用して利用できるようになります。

$ sudo npm install -g apigeetool
sudo は、PATH に apigeetool を配置する-g オプションとともに使用する必要がある場合があります。-g オプションを使用しない場合は、PATH に apigeetool を手動で追加する必要があります。

*nix ベースのマシンの場合、モジュールは -g オプションにより通常は /usr/local/lib/node_modules/apigeetool に配置されます。

GitHub からのインストール

GitHub から API Platform Tools をダウンロードまたはクローン化します。インストール手順については、リポジトリのルートディレクトリにある README ファイルを参照してください。

$ git clone https://github.com/apigee/apigeetool-node.git

インストールが完了したら、apigeetool の実行可能ファイルが Path に存在することを確認してください。以下のように入力してテストできます。

$ apigeetool -h

Node.js アプリケーションを Edge に apigeetool で展開する

注記: 展開する前に、Apigee Edge 組織名、および Apigee Edge アカウントのユーザー名とパスワードを把握しておく必要があります。apigeetool コマンドを正しく指定するためにはこうした情報が必要です。

Node.js アプリケーションを apigeetool で展開するには、次の手順に従います。

  1. 端末ウィンドウで、cd を使用して Node.js アプリケーションのルートディレクトリへ移動します。
  2. apigeetool ユーティリティを、deploynodeapp コマンドを指定して実行します。

    $ apigeetool deploynodeapp -n {A name for your new proxy} -d {The root directory of your Node.js app} -m {The name of the main Node.js file} -o {Your org name on Edge} -e {The environment to deploy to} -b {The base URL for your proxy} -u {Your Edge email address} -p {Your Edge password}
    
    例:

    $ apigeetool deploynodeapp -n myNodeApp -d . -m server.js -o myorg -e test -b /myNodeApp -u ntesla -p myPassword
  3. 端末ウィンドウで出力を確認します。以下のようになります。

    Importing new application myNodeApp
    Imported new app revision 1
    Deploying revision 1
      Deployed.
    Proxy: "myNodeApp" Revision 1
      Environment: test BasePath: /myNodeApp
      Status: deployed

    「Status: deployed」と表示されていたら、完了です。すべて円滑に進みました。Node.js アプリが API プロキシにラップされ、Edge に展開されて実行されており、リクエストの処理を待機しています。テストの用意が整っています。

  4. プロキシをテストします。例:

    $ curl http://myorg-test.apigee.net/myNodeApp
    Hello, My Node App!
  5. 必要に応じて、Apigee Edge アカウントにログインし、管理 UI の「API Proxies」ページに移動します。新しいプロキシがリストされるのを確認できます。

apigeetool による依存ファイルおよびモジュールの扱い

Node.js アプリケーションがインストール済みのモジュールに依存している場合、apigeetool はそれへの対処として、node_modules フォルダを zip 圧縮してプロキシバンドルに追加します。追加のアクションは不要です。追加ソースコードを含む任意のディレクトリについても同様です。apigeetool ユーティリティがそれらを zip 圧縮し、バンドルとして展開します。

zip 圧縮されたディレクトリに含まれるファイルは、Edge 管理 UI のエディタでは編集できません。変更が必要な場合は、プロジェクトを書き出し、ファイルをローカルに編集してから、apigeetool を使用するか、書き出したプロジェクトを管理 UI で読み込むかして、展開し直します。 「Node.js コードを使用したプロキシの読み込みと書き出し」も参照してください。 

apigeetool の基本的な使用法情報

apigeetool ユーティリティの入力パラメータの基本的な使用法については、以下のコマンドを入力します。

$ apigeetool deploynodeapp -h

  Usage: deploynodeapp -n [name] -o [organization] -e [environment]
  -d [directory name] -m [main script file]
  -u [username] -p [password]
  -b [base path] -l [apigee API url] -z [zip file] -i -h
  -o Apigee organization name
  -e Apigee environment name
  -n Apigee proxy name
  -d Apigee proxy directory
  -m Main script name: Should be at the top level of the directory
  -u Apigee user name
  -p Apigee password
  -b Base path (optional, defaults to /)
  -L Apigee API URL (optional, defaults to https://api.enterprise.apigee.com)
  -z ZIP file to save (optional for debugging)
  -i import only, do not deploy
  -R Resolve Node.js modules on Apigee Edge. Equivalent to running npm install on your project. 
  -U Uploads Node.js modules to Apigee Edge. 
  -h Print this message

既存の Node.js  ファイルを使用した新しいプロキシの作成

既存の Node.js アプリケーションを API プロキシに組み込むには、プロキシを作成する際にアプリケーションを追加するという方法もあります。この方法は、最初から最後まで管理 UI と「New API Proxy」ダイアログだけでできます。

現状ではこれが、既存のローカル Node.js アプリケーションをプロキシに管理 UI で組み込むことのできる唯一の方法です。 この手順は、新しいプロキシの作成中に実施する必要があります。

  1. API プロキシのサマリーページで、「+API Proxy」をクリックします。 
  2. 「New API Proxy」ダイアログで、「Existing Node.js」を選択します。
  3. 「Choose Files」ボタンを使用して、読み込む Node.js ファイルを 1 つまたは複数選択します。 
    複数の Node.js ファイルをアップロードするには、メインファイルがどれであるかを指定する必要があります (ここで言うメインファイルとは、ノートコマンドを使用してコマンドラインから呼び出すファイルです)。
  4. プロキシに名前を付けます。この例では hellonode としています。 
  5. バージョン /v1 を「Project Base Path」に追加します。API にバージョン番号を付けることは、ベストプラクティスの 1 つです。 
  6. 「Build」をクリックします。 
  7. 「Develop」をクリックして、「Develop」ビューに入ります。 
  8. コードエディタで TargetEndpoint ファイルを開きます。
  9. <ScriptTarget> 要素にメインの Node.js ファイルが以下のように指定されていることを確認します。


    <ScriptTarget>
            <ResourceURL>node://server.js</ResourceURL>
            <Properties/>
    </ScriptTarget>
  10. 「Save」をクリックします。 

新しい Node.js リソースファイルの追加と呼び出し 

Node.js コードをプロキシに追加する方法には、UI を使用して、またはローカルファイルシステムからアップロードして、直接追加するという方法もあります。また、どの Node.js ファイルがメインファイルか、つまりプロキシが展開されたときに Edge が呼び出すファイルがどれであるかも指定できます。 

UI での新しい Node.js ファイルの追加

管理 UI を使用すると追加の Node.js ソースファイルを Edge プラットフォーム上のプロキシに追加できます。追加のファイルは UI で直接作成したり、ファイルシステムから読み込んだりできます。まず、UI でのやり方を見ていきます。

メインファイルに指定できる Node.js ソースファイルは 1 つだけです。ここで言うメインファイルとは、Node.js アプリケーションを起動するためにコマンドラインで実行するファイルのことです。メインファイルは、プロキシのターゲットエンドポイント定義ファイルに、<ScriptTarget> という要素を使用して指定されます。このことについては、「読み込み済み Node.js ファイルの呼び出し」と「既存の API プロキシへの Node.js の追加」で説明しています。そのまま使用できるこれらの例で、正しいターゲットエンドポイント定義は自動生成されています。

新しい Node.js リソースファイルを作成するには、次の手順に従います。

  1. 「Develop」ビューで、「New」メニューの「New Script」を選択します。
  2. 「Add Script」ダイアログで、 「File Type」でファイルの種類として「Node」を選択し、「Script Name」にスクリプト名を指定します。
  3. 「Add」をクリックします。 

 

新しい空の Node.js ファイルがエディタに開きます。コードは切り貼りでファイルに追加できます。このファイルは、「Navigator」の「Scripts」セクションにも表示されます。

ファイルシステムからの Node.js ファイルの読み込み

Node.js ファイルをファイルシステムからプロキシに読み込むには、次の手順に従います。

  1. 「Develop」ビューで、「New」メニューの「New Script」を選択します。 
  2. 「Add Script」ダイアログで、「Import Script」をクリックします。
  3. ファイルツールを使用して Node.js ファイルを選択します。
  4. ダイアログにファイルの名前が追加されますが、必要に応じて変更できます。
  5. 「Add」をクリックします。ファイルが「Navigator」ま「Scripts」セクションに表示され、エディタに開きます。
  6. 「Save」をクリックします。 

読み込まれたファイルを呼び出したい場合は、手順がもう 1 つ必要で、次のセクションで説明します。

読み込まれた Node.js ファイルの呼び出し

新たに読み込まれたか作成されたかした Node.js ファイルをそのまま呼び出すことはできません。Edge では、Node.js ファイルのどれかがメインファイルに指定されていることが必要だからです。メインファイルは、Target Endpoint 定義の <ScriptTarget> 要素で指定します。メインの Node.js ファイルがどのファイルかを指定するには、次の手順に従います。

  1. 「Navigator」の「Target Endpoints」で、ターゲットエンドポイントの名前 (通常は default) をクリックします。 
  2. Code エディタで、<ScriptTarget> 要素を編集します。具体的には、<ResourceURL> を変更して、メイン Node.js ファイル にしたいファイルの名前を反映させます。例えば、hello-world.js という名前のファイルをメインファイルにしたい場合は、ResourceURL 要素に「node://hello-world.js」と入力します。
  3. 「Save」をクリックします。


この段階で、過去に使用した任意のプロキシパスを使用してこのファイルを呼び出せるようになります。例えば、ここまで見てきた Hello World! サンプルでは、ベースパスとして v1/hello が指定されています。ただし、ベースパスは Proxy Endpoint を編集して変更できます。

Proxy Endpoint は、クライアントによる API の呼び出し方を定義していることを思い出してください。クライアントが API を新しいベースパスで呼び出すと、メイン Node.js ファイルが指定されている Target Endpoint に処理がルーティングされます。

  1. 「Navigator」の「Proxy Endpoints」で、プロキシエンドポイントの名前 (通常は default) をクリックします。 
  2. Code エディタで、<HttpProxyConnection> 要素を編集します。具体的には、<BasePath> を必要に応じて変更します。例えば、現状の <BasePath> が v1/hello で、それを v1/my-node-file にしたい場合は、<BasePath> 要素を以下のように変更します。

    <BasePath>/v1/my-node-file</BasePath>
     
  3. 「Save」をクリックします。 
  4. 以下のように、プロキシを新しいベースパスで呼び出します。

    $ curl http://myorg-test.apigee.net/v1/my-node-file
    Hello, World!

Node.js コードを使用したプロキシの読み込みと書き出し

Node.js コードを含むプロキシを Edge に展開すると、そのプロキシは随時、システムに書き出して編集し、管理 UI で Edge に読み込み直すことができます。このようなラウンドトリップ開発はよく用いられているテクニックです。

  1. API プロキシのサマリーページで、「Develop」をクリックします。
  2. 「Develop」ページで、「Download Current Revision」を選択します。
  3. ダウンロードされたファイルをシステム上に解凍します。

ダウンロード機能では、プロキシの展開時に zip 圧縮されたディレクトリ、例えば node_modules など、ソースコードを含むフォルダはどれも解凍されません。プロキシがシステムにダウンロードされたら、手動で解凍する必要があります。

プロキシバンドルを Edge に再び読み込むには、同じメニューの「Import Into New Revision」を選択します。

プロキシを展開するための API を使用することもできます。詳細については、「コマンドラインでのプロキシの展開」を参照してください。 

次の手順

次のトピック、「既存の API プロキシへの Node.js の追加」では、Node.js アプリをファイルシステムに存在する既存のプロキシに追加して Edge に展開する方法について説明します。

Help or comments?