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. 新しい Edge UI が表示されていることを確認します。表示されていない場合は、従来の Edge のナビゲーション バーで [Try New Edge] をクリックします。
  4. サイド ナビゲーション バーで、[Develop] > [API Proxies] を選択します。
  5. ログを表示するプロキシを選択します。
  6. [Develop] タブをクリックします。
  7. ビルドログを表示する場合は、[Build Logs] をクリックします。
  8. ランタイムログを表示する場合は、[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> コマンドを使用することで、auth トークの一覧表示、作成、取り消しを行います。詳細については、npm-token のドキュメントをご覧ください。
  3. ブラウザで、Apigee アカウント login.apigee.com にログインします。
  4. Key-Value マップの構成ページに移動します。
    1. 新しい Edge UI では、[Admin] > [Environments] > [Key Value Maps] を選択します。
    2. 従来の UI では、[APIs] > [Environment Configuration] > [Key Value Maps] を選択します。
  5. [+ Key Value Map] をクリックします。
  6. [New Key Value Map] ダイアログで、名前を入力して [Encrypted] を選択します。
  7. [Add] をクリックします。
  8. 前の手順で取得したか、新しいエントリとして作成した auth トークンを、作成したばかりの各 KVM に追加します。
  9. app.yaml ファイルで、KVM と、NPM 認証トークンが関連付けられた鍵を参照するエントリを追加します。次のようになります。
  10.     env:
        - name: NPM_TOKEN
         valueRef:
           name: npm_store
           key: private_token

    ここで:

    • トップレベルの name 属性は、作成される環境変数の名前に対応します。
    • valueRef の下の name は、前の手順で作成した KVM と対応します。
    • key 属性は、KVM に追加した NPM トークンに関連付けられる鍵に対応します。
  11. package.json と同じディレクトリに .npmrc ファイルを作成します。このファイルは、次のようになります。
    //registry.npmjs.org/:_authToken=${NPM_TOKEN}
    あるいは、registry.npmjs.org を使用していない場合は、.npmrc ファイルで @myscope:registry=https://mycustomregistry.example.org といった行を追加することでスコープを設定できます。詳しくは、npmrc のドキュメントもご覧ください。
  12. .npmrc ファイルと app.yaml ファイルを含めて、Node.js プロキシをアップロードまたは更新します。
  13. 新規または更新されたプロキシがデプロイされ、必要なプライベート リポジトリ モジュールで機能することを確認します。
  14. プロキシがデプロイされない場合は、ビルドログを調べ、プライベート 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 は、アプリケーションの実行状況の確認にのみ使用され、レスポンス自体は無視されます。