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

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

重要

Amazon Linux 2 プラットフォームバージョンは、(Amazon Linux 2 より前の) Amazon Linux AMI プラットフォームバージョンとは根本的に異なります。これらの異なるプラットフォーム世代は、いくつかの点で互換性がありません。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 を追加すると、アプリケーションを起動するコマンドを指定できます。Procfile を指定しない場合、npm start ファイルを指定すると Elastic Beanstalk は package.json を実行します。これを指定しない場合、Elastic Beanstalk は app.js または server.js をこの順序で探し、実行します。

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

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

Node.js 環境の設定

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

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

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

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

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

    注記

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

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

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

コンテナオプション

次のプラットフォーム固有のオプションを指定できます。

  • [プロキシサーバー] – 環境インスタンスで使用するプロキシサーバーです。デフォルトでは、NGNIX が使用されます。

ログオプション

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

  • インスタンスプロファイル - アプリケーションに関連付けられた Amazon S3 バケットへのアクセス許可のあるインスタンスプロファイルを指定します。

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

静的ファイルes

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

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

環境プロパティ

[環境プロパティ] セクションを使用して、アプリケーションを実行中の 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 環境でのみサポートされます。

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

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

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

  • [Gzip 圧縮] - GZIP 圧縮を有効にするかどうかを指定します。デフォルトでは、GZIP 圧縮は有効になっています。

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

Node.js 設定の名前空間

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

aws:elasticbeanstalk:environment:proxy 名前空間を使用して、環境のインスタンスで使用するプロキシを選択できます。次の例では、Apache HTTPD プロキシサーバーを使用するように環境を設定します。

例 .ebextensions/nodejs-settings.config

option_settings: aws:elasticbeanstalk:environment:proxy: ProxyServer: apache

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 コンソールを開き、[Regions] (リージョン) リストで AWS リージョンを選択します。

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

    注記

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

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

  4. [プラットフォームのバージョンの更新] ダイアログボックスで、Node.js バージョンを選択します。

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

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

次の設定ファイルは、Elastic Beanstalk がアプリケーションの実行に npm start を使用するよう指示します。また、プロキシタイプを Apache に設定し、圧縮を有効にします。最後に、2 つのソースディレクトリから静的ファイルを提供するようにプロキシを設定します。1 つのソースは、statichtml ソースディレクトリからのウェブサイトのルートの下の html パスにある HTML ファイルです。もう 1 つのソースは、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 詳細については、「設定オプション」を参照してください。