メニュー
AWS Elastic Beanstalk
開発者ガイド (API Version 2010-12-01)

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

AWS Elastic Beanstalk Node.js プラットフォームは、Node.js ウェブアプリケーションのプラットフォーム設定として、nginx プロキシサーバーの背後、Apache サーバーの背後、または単独で実行できます。

Elastic Beanstalk には、Elastic Beanstalk 環境内の EC2 インスタンスで実行されるソフトウェアのカスタマイズに使用できる設定オプションが用意されています。アプリケーションの前面で実行するプロキシサーバー、実行する Node.js の特定のバージョン、およびアプリケーションの実行に使用するコマンドを選択できます。また、必要に応じてアプリケーションの環境変数を設定し、Amazon S3 へのログローテーションを有効にできます。

プラットフォームに固有の設定オプションは AWS マネジメントコンソール で実行中の環境の設定を変更するために利用できます。環境を終了したときにその設定が失われないようにするため、保存済み設定を使用して設定を保存し、それを後で他の環境に適用することができます。

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

デプロイの間にパッケージをインストールするために、ソースバンドルに Package.json ファイルを含めることができます。また、依存関係のバージョンをロックダウンするために、npm-shrinkwrap.json ファイルを含めることができます。

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

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

Node.js 環境の設定

[Node.js] 設定を使用すると、Amazon EC2 インスタンスの動作を微調整し、Amazon S3 ログのローテーションを有効または無効にできます。Elastic Beanstalk 環境の Amazon EC2 インスタンス設定を編集するには、AWS マネジメントコンソールを使用します。

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

  1. Elastic Beanstalk コンソールを開きます。

  2. お客様の環境の管理ページに移動します。

  3. [Configuration] を選択します。

  4. [Software Configuration] セクションで、設定アイコン (  を編集します。 ) を選択します。

コンテナオプション

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

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

  • Node Version – Node.js のバージョンを指定します。サポートされている のバージョンについては、Elastic Beanstalk でサポートされているプラットフォーム を参照してください。

    注記

    お使いの Node.js バージョンのサポートがプラットフォーム設定から削除された場合には、プラットフォームアップグレードの前に、バージョン設定の変更または削除を行ってください。これによって、いくつかの Node.js のバージョンにセキュリティの脆弱性が見つかる場合があります

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

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

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

ログオプション

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

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

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

静的ファイル

パフォーマンスを向上させるには、ウェブアプリケーション内の一連のディレクトリから静的ファイル(HTML、画像など)を提供するように nginx または Apache を設定します。仮想パスおよびディレクトリマッピングは、[Static Files] セクションの [Container] タブで設定できます。複数のマッピングを追加するには、[Add Path] をクリックします。マッピングを削除するには、[Remove] をクリックします。

環境プロパティ

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

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

var endpoint = process.env.API_ENDPOINT

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

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

Node.js 設定の名前空間

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

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

以下の設定ファイルでは、npm start を使用してアプリケーションを実行するよう Elastic Beanstalk に指示し、プロキシタイプを Apache に設定するほか、圧縮を有効にし、/images パスの myimages ディレクトリから静的画像を提供するようプロキシを設定します。

例 .ebextensions/node-settings.config

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

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