Hosted Targets のタスク

Hosted Targets プロキシのデプロイ解除

Hosted Targets アプリケーションが含まれる Edge プロキシをデプロイ解除すると、関連付けられている Hosted Targets アプリもデプロイ解除されますが、基盤となるアプリケーション イメージは削除されません。プロキシを再デプロイすると、Hosted Targets アプリも再デプロイされます。

Hosted Targets プロキシの削除

Hosted Targets プロキシを削除すると、基盤となるランタイム インスタンスがしばらくの間実行を停止します。ただし、アプリケーション コードは維持されます。

ログファイルへのアクセス

ログファイルはデバッグとトラブルシューティングに役立ちます。Hosted Targets のデプロイでは、2 種類のログファイルを表示できます。

  • ビルドログ - Hosted Targets アプリのデプロイとビルドに関する出力を表示します。
  • ランタイムログ - 実行中の Hosted Targets アプリに関連する出力を表示します。ランタイムログは当該の環境を対象とし、現在デプロイされているプロキシ リビジョンのログ情報を表示します。

Edge UI からのログへのアクセス

  1. apigee.com/edge にアクセスします。
  2. ログイン認証情報を入力し、[Sign In] をクリックします。
  3. サイド ナビゲーション メニューで [Develop] > [API Proxies] を選択します。
  4. ログを表示するプロキシを選択します。
  5. [Develop] タブをクリックします。
  6. ビルドログを表示するには、[Build Logs] をクリックします。
  7. ランタイムログを表示するには、[Runtime Logs] をクリックします。

API を使用したログへのアクセス

Hosted Targets のログの取得には、Edge Management API も使用できます。詳しくは、キャッシュに保存された Node.js ログを取得するをご覧ください。

プライベート NPM リポジトリの使用

ここでは、開発環境でプライベート NPM リポジトリを使用している場合に、Node.js プロキシを Hosted Targets にデプロイする方法を説明します。

プライベート リポジトリの使用に関して必要になる知識

Node.js アプリを Edge にデプロイするとき、デプロイ プロセスの一環として、プロジェクトのすべての依存関係が自動的にインポートされます。基本的に、Hosted Targets はデプロイ時にコード上で npm install を実行します。ただし、開発環境でプライベート NPM リポジトリを使用していると、Cloud 内のプライベートの依存関係を解決できません。このような場合の解決策として、デプロイ ユーティリティ apigeetool を使用するときに --bundled-dependencies オプションを使用します。システムから Edge に Node.js をデプロイするもご覧ください。

apigeetool--bundled-dependencies フラグを使用すると、Node.js アプリが Hosted Targets にアップロードされ、package.json 内の bundledDependencies 配列にリストされたすべてのローカル / プライベート ファイルが zip 圧縮され、バンドルとともにアップロードされます。

一般的な状況ではありませんが、一般公開 NPM リポジトリを内部でミラーリングする場合、限定公開ミラーを指す .npmrc または package-lock.json ファイルがデプロイ バンドルに含まれているとデプロイが失敗しますので、ご注意ください。この場合は、デプロイするプロキシ バンドルから .npmrc または package-lock.json を除外してください。

プライベート NPM リポジトリを使用するデプロイ

プライベート NPM リポジトリから提供されるモジュールを使用するには、次の手順を使用します。

  1. NPM にログインします。
    npm login
  2. 次のようにして NPM 認証トークンを取得します。
    1. .npmrc~/.npmrc にある)を見つけます。
    2. .npmrc で、行の末尾にある次のようなトークンを書き留めます。

      //registry.npmjs.org/:_authToken=****
    3. また、認証トークンの一覧表示、作成、取り消しを行うには npm token <list | create | revoke> コマンドを使用します。詳細については、npm-token のドキュメントをご覧ください。
  3. 下記の手順に従って、Key-Value マップの構成ページに移動します。

    Edge

    Edge UI を使用して Key-Value マップの構成ページにアクセスするには:

    1. apigee.com/edge にログインします。
    2. 左側のナビゲーション バーで [Admin] > [Environments] > [Key Value Maps] を選択します。

    Classic Edge(Private Cloud)

    Classic Edge UI を使用して Key-Value マップの構成ページにアクセスするには:

    1. http://ms-ip:9000 にログインします。ここで、ms-ip は、Management Server ノードの IP アドレスまたは DNS 名です。
    2. 上部のナビゲーション バーで [APIs] > [Environment Configuration] > [Key Value Maps] を選択します。
  4. [+ Key Value Map] をクリックします。
  5. [New Key Value Map] ダイアログで、名前を入力して [Encrypted] を選択します。
  6. [Add] をクリックします。
  7. 前の手順で取得したか、新しいエントリとして作成した認証トークンを、作成したばかりの各 KVM に追加します。
  8. app.yaml ファイルで、KVM と、NPM 認証トークンに関連付けられた鍵を参照するエントリを追加します。次のようになります。
  9. env:
    - name: NPM_TOKEN
     valueRef:
       name: npm_store
       key: private_token

    ここで

    • 最上位の name 属性は、作成される環境変数の名前に対応します。
    • valueRefname は、前の手順で作成した KVM に対応します。
    • key 属性は、KVM に追加した NPM トークンに関連付けられる鍵に対応します。
  10. package.json と同じディレクトリに .npmrc ファイルを作成します。このファイルは、次のようになります。
    //registry.npmjs.org/:_authToken=${NPM_TOKEN}
    あるいは、registry.npmjs.org を使用していない場合は、.npmrc ファイルに @myscope:registry=https://mycustomregistry.example.org のような行を追加することでスコープを設定できます。npmrc のドキュメントもご覧ください。
  11. .npmrc ファイルと app.yaml ファイルを含めて、Node.js プロキシをアップロードまたは更新します。
  12. 新規または更新されたプロキシがデプロイされ、必要なプライベート リポジトリ モジュールで機能することを確認します。
  13. プロキシがデプロイされない場合は、ビルドログを調べ、プライベート NPM モジュールのインストールでエラーが発生していないかを確認します。エラーが発生している場合は次のようにします。
    1. [Develop] タブに .npmrc があることを確認します。
    2. トークンが有効であることを確認します(KVM にトークンを配置してモジュールをローカルにインストールしてみます)。
    3. カスタム スコープを使用している場合は、それが設定されていることを確認します。

バンドルされた依存関係を使用する際の NPM バージョンの指定

Hosted Targets 環境で依存関係をインストールする場合、デフォルトでは NPM v4 が使用されます。他の NPM バージョンを使用する場合、NPM_VERSION 環境変数で指定する必要があります。環境変数の設定は、アプリケーションのマニフェスト ファイルで行えます。詳細については、マニフェスト ファイルの要素をご覧ください。

バンドルされた依存関係を使用する際に NPM_VERSION を指定しないと、Hosted Targets ではデフォルトで NPM v4 が使用されます。バンドルされた依存関係を使用しない場合は、Node.js ランタイムで指定された NPM バージョンが使用されます。

バンドルされた依存関係の例

Hosted Targets でバンドルされた依存関係の機能を確認するには、「How to create a Node.js application with Hosted Functions using custom modules」をご覧ください。

ヘルスチェック エンドポイントの追加

Node.js アプリケーションにヘルスチェック エンドポイントを実装できます。Apigee でこのエンドポイントを使用して、Node.js アプリケーションが起動した際に、コンテナ内での Node.js アプリケーションの稼働状況を確認します。

デフォルトでは、Apigee には /health が指定されています。このデフォルトのエンドポイントは、環境変数 HOSTED_TARGET_HEALTH_CHECK_PATH でエンドポイントを指定することで変更可能です。この変数はアプリケーションのマニフェスト ファイルで設定できます。詳細については、マニフェスト ファイルの要素をご覧ください。

ヘルスチェック エンドポイントの実装は必須ではありません。ただし、実装しない場合は次の点に留意してください。

  • Apigee でエンドポイントが参照された際にアプリケーションが終了すると、アプリケーションは想定通りに開始されません。
  • エンドポイントが 404 Not Found の HTTP ステータスを返しても問題はありません。/health または HOSTED_TARGET_HEALTH_CHECK_PATH は、アプリケーションの実行状況の確認にのみ使用され、レスポンス自体は無視されます。