Elastic Beanstalk Node.js プラットフォームを使用する - AWS Elastic Beanstalk

Elastic Beanstalk Node.js プラットフォームを使用する

重要

Amazon Linux 2 プラットフォームのバージョンは、Amazon Linux AMI プラットフォームのバージョン (前の Amazon Linux 2) とは根本的に異なります。これらの異なるプラットフォーム世代は、いくつかの点で互換性がありません。Amazon Linux 2 プラットフォームのバージョンに移行する場合は、「Elastic Beanstalk Linux アプリケーションを Amazon Linux 2 に移行する」の情報を必ずお読みください。

AWS Elastic Beanstalk Node.js プラットフォームは、nginx プロキシサーバーの背後で が実行する Node.js ウェブアプリケーション用のプラットフォームバージョンのセットです。

Elastic Beanstalk には、Elastic Beanstalk 環境内の EC2 インスタンスで実行されるソフトウェアのカスタマイズに使用できる設定オプションが用意されています。アプリケーションに必要な環境変数を設定し、Amazon S3 に対してログのローテーションを有効にしたら、アプリケーションのソースで静的ファイルが含まれるフォルダを、プロキシサーバーによって提供されるパスにマッピングできます。

設定オプションは 実行中の環境の設定を変更するために Elastic Beanstalk コンソールで利用できます。環境を終了したときにその設定が失われないようにするため、保存済み設定を使用して設定を保存し、それを後で他の環境に適用することができます。

ソースコードの設定を保存する場合、設定ファイルを含めることができます。設定ファイルの設定は、環境を作成するたびに、またはアプリケーションをデプロイするたびに適用されます。設定ファイルを使用して、デプロイの間にパッケージをインストールしたり、スクリプトを実行したり、他のインスタンスのカスタマイズオペレーションを実行することもできます。

ソースバンドルに Package.json ファイルを含めて、デプロイ中にパッケージをインストールしたり、開始コマンドを指定したり、アプリケーションで使用する Node.js のバージョンを指定したりできます。依存関係のバージョンをロックダウンする npm-shrinkwrap.json ファイルを含めることができます。

Node.js プラットフォームには、静的なアセットに対応し、アプリケーションにトラフィックを転送して、レスポンスを圧縮するためのプロキシサーバーが含まれています。高度なシナリオでは、デフォルトのプロキシ設定を拡張また上書きできます。

次の例に示すように、Procfile をソースバンドルにを追加して、アプリケーションを起動するコマンドを指定できます。この機能は、aws:elasticbeanstalk:container:nodejs 名前空間のレガシー NodeCommand オプションを置き換えます。

例 [Procfile]

web: node index.js

Procfile の使用方法の詳細については、Elastic Beanstalk Linux プラットフォームの拡張 の「ビルドファイルとプロファイル」セクションを展開します。

Procfile を指定しない場合、package.json ファイルを指定すると Elastic Beanstalk は npm start を実行します。これを指定しない場合、Elastic Beanstalk は app.js または server.js をこの順序で探し、実行します。

Elastic Beanstalk コンソールで適用される設定は、設定ファイルに同じ設定があれば、それらの設定を上書きします。これにより、設定ファイルでデフォルト設定を定義し、コンソールでそのデフォルト設定を環境固有の設定で上書きできます。設定の優先順位の詳細と設定の他の変更方法については、「設定オプション」を参照してください。

Elastic Beanstalk Linux ベースのプラットフォームを拡張するさまざまな方法の詳細については、Elastic Beanstalk Linux プラットフォームの拡張 を参照してください。

Node.js 環境の設定

Node.js プラットフォーム設定では、Amazon EC2 インスタンスの動作を微調整できます。Elastic Beanstalk 環境の Amazon EC2 インスタンス設定を編集するには、Elastic Beanstalk コンソールを使用します。

Elastic Beanstalk コンソールを使用して、Amazon S3 へのログローテーションを有効にし、アプリケーションが環境から読むことができる変数を設定します。

Elastic Beanstalk コンソールで Node.js 環境を設定するには

  1. Elastic Beanstalk コンソールを開き、[リージョン] のリストで AWS リージョンを選択します。

  2. ナビゲーションペインで、[環境] を選択し、リストから環境の名前を選択します。

    注記

    環境が多数ある場合は、検索バーを使用して環境リストをフィルタリングします。

  3. ナビゲーションペインで、[設定] を選択します。

  4. [ソフトウェア] 設定カテゴリで、[編集] を選択します。

ログオプション

[Log Options] セクションには、2 つの設定があります。

  • [Instance profile] – アプリケーションに関連付けられた Amazon S3 バケットへのアクセス許可が付与されているインスタンスプロファイルを指定します。

  • [Amazon S3 へのログファイルローテーションを有効にする] – アプリケーションの Amazon EC2 インスタンスのログファイルを、アプリケーションに関連付けられている Amazon S3 バケットにコピーするかどうかを指定します。

静的ファイル

パフォーマンスを向上させるには、[Static files (性的ファイル)] セクションを使用してウェブアプリケーション内のディレクトリセットの静的ファイル (HTML、イメージなど) を処理するようにプロキシサーバーを設定できます。ディレクトリごとに、仮想パスをディレクトリマッピングに設定します。プロキシサーバーは、指定されたパスのファイルに対するリクエストを受け取ると、アプリケーションにリクエストをルーティングする代わりにファイルを直接処理します。

Elastic Beanstalk コンソールによる静的ファイルの設定の詳細については、「静的ファイルの提供」を参照してください。

環境プロパティ

[Environment Properties] セクションでは、アプリケーションを実行している Amazon EC2 インスタンスの環境設定を指定できます。これらの設定は、キーと値のペアでアプリケーションに渡されます。

AWS Elastic Beanstalk で実行中の Node.js 環境内部で、以下の例と同様の process.env.ENV_VARIABLE を使用して環境変数にアクセスできます。

var endpoint = process.env.API_ENDPOINT

Node.js プラットフォームは、プロキシサーバーがトラフィックを渡すポートに PORT 環境変数を設定します。プロキシサーバーを設定する を参照してください。

詳細については、「環境プロパティとその他のソフトウェアの設定」を参照してください。

Amazon Linux AMI (Amazon Linux 2 以前) の Node.js 環境の設定

次のコンソールソフトウェア設定カテゴリは、Amazon Linux AMI プラットフォームバージョン (Amazon Linux 2 以前) を使用する Elastic Beanstalk Node.js 環境でのみサポートされます。

設定ページで、次のように指定します。

  • [Proxy server (プロキシサーバー)] – Node.js へのプロキシ接続に使用するウェブサーバーを指定します。デフォルトでは、nginx が使用されます。[none] を選択すると、静的なファイルマッピングは有効にならず、gzip 圧縮は無効になります。

  • [Node.js version (Node.js バージョン)] – Node.js のバージョンを指定します。サポートされている Node.js バージョンのリストについては、AWS Elastic Beanstalk プラットフォーム ガイドの「Node.js」を参照してください。

  • [Gzip compression (Gzip 圧縮)] – gzip 圧縮が有効かどうかを指定します。デフォルトでは、gzip 圧縮は有効です。

  • [Node command (ノードコマンド)] – Node.js アプリケーションの起動に使用するコマンドを入力できます。空の文字列 (デフォルト) は、Elastic Beanstalk が app.jsserver.jsnpm start をこの順序で使用することを意味しています。

Node.js 設定の名前空間

設定ファイルを使用して、設定オプションを設定し、デプロイの間、他のインスタンス設定タスクを実行できます。設定オプションは、Elastic Beanstalk サービスまたは使用できるプラットフォームで定義し、名前空間に整理できます。

Node.js プラットフォームは、プラットフォーム固有の名前空間を定義しません。aws:elasticbeanstalk:environment:proxy:staticfiles 名前空間を使用して、静的ファイルを配信するようにプロキシを設定できます。詳細と例については、「静的ファイルの提供」を参照してください。

Elastic Beanstalk には、環境をカスタマイズするための多数の設定オプションが用意されています。設定ファイルに加えて、コンソール、保存された設定、EB CLI、または AWS CLI を使用して、設定オプションを指定することもできます。詳細については、「設定オプション」を参照してください。

Amazon Linux AMI (Amazon Linux 2 以前) の Node.js プラットフォーム

Elastic Beanstalk Node.js 環境で Amazon Linux AMI プラットフォームバージョン (Amazon Linux 2 以前) を使用している場合は、このセクションの追加情報をお読みください。

Elastic Beanstalk は、Amazon Linux AMI Node.js プラットフォームバージョンのプラットフォーム固有の設定オプションをいくつかサポートしています。アプリケーションの前面で実行するプロキシサーバー、実行する Node.js の特定のバージョン、およびアプリケーションの実行に使用するコマンドを選択できます。

プロキシサーバーの場合は、nginx に加えて、Apache プロキシサーバーを選択できます。さらに、none 値を ProxyServer オプションに設定することもできます。この場合、Elastic Beanstalk は、プロキシサーバーの背後ではなく、スタンドアロンとしてアプリケーションを実行します。環境がスタンドアロンアプリケーションを実行している場合は、nginx がトラフィックを転送するポートをリッスンするようにコードを更新します。

var port = process.env.PORT || 8080; app.listen(port, function() { console.log('Server running at http://127.0.0.1:%s', port); });

サポートされている言語バージョンに関しては、Node.js Amazon Linux AMI プラットフォームは他の Elastic Beanstalk マネージド型プラットフォームと若干異なります。各 Node.js プラットフォームのバージョンは、いくつかの Node.js 言語バージョンをサポートしています。サポートされている Node.js バージョンのリストについては、AWS Elastic Beanstalk プラットフォーム ガイドの「Node.js」を参照してください。

プラットフォーム固有の設定オプションを使用して、言語バージョンを設定できます。詳細については、「Node.js 環境の設定」を参照してください。または、次の手順に示すように、Elastic Beanstalk コンソールを使用して、プラットフォームバージョンの更新の一部として環境で使用する Node.js バージョンを更新することもできます。

注記

使用しているバージョンの Node.js に対するサポートがプラットフォームバージョンから削除された場合は、プラットフォームの更新に先立って、バージョン設定を変更または削除する必要があります。これは、1 つ以上のバージョンの Node.js でセキュリティの脆弱性が検出された場合に発生することがあります

この場合、設定した NodeVersion をサポートしない新しいバージョンのプラットフォームにアップグレードしようとすると、失敗します。新しい環境の作成を回避するには、古いプラットフォームバージョンと新しいプラットフォームバージョンの両方でサポートされている Node.js バージョンに NodeVersion 設定オプションを変更するか、オプション設定を削除してから、プラットフォームの更新を実行します。

Elastic Beanstalk コンソールで環境の Node.js バージョンを設定するには

  1. Elastic Beanstalk コンソールを開き、[リージョン] のリストで AWS リージョンを選択します。

  2. ナビゲーションペインで、[環境] を選択し、リストから環境の名前を選択します。

    注記

    環境が多数ある場合は、検索バーを使用して環境リストをフィルタリングします。

  3. 環境の概要ページの[Platform (プラットフォーム)] で、[変更] を選択します。

  4. [Update platform version (プラットフォームバージョンを更新)] ダイアログで、Node.js バージョンを選択します。

    
                Elastic Beanstalk プラットフォームバージョン更新の確認
  5. [Save] を選択します。

Node.js Amazon Linux AMI プラットフォームでは、名前空間 (aws:elasticbeanstalk:container:nodejs:staticfiles および aws:elasticbeanstalk:container:nodejs) の追加のオプションを定義します。

次の設定ファイルは、npm start を使用してアプリケーションを実行するように Elastic Beanstalk に指示し、プロキシタイプを Apache に設定して、圧縮を有効にし、2 つのソースディレクトリから静的ファイルを提供するようにプロキシを設定します。statichtml ソースディレクトリからウェブサイトのルートの下にある html パスにある HTML ファイル、および staticimages ソースディレクトリからウェブサイトのルートの下にある images パスにある画像ファイル。

例 .ebextensions/node-settings.config

option_settings: aws:elasticbeanstalk:container:nodejs: NodeCommand: "npm start" ProxyServer: apache GzipCompression: true aws:elasticbeanstalk:container:nodejs:staticfiles: /html: statichtml /images: staticimages

Elastic Beanstalk には、環境をカスタマイズするための多数の設定オプションが用意されています。設定ファイルに加えて、コンソール、保存された設定、EB CLI、または AWS CLI を使用して、設定オプションを指定することもできます。詳細については、「設定オプション」を参照してください。