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

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

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

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 を指定しない場合、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 コンソールを使用して、Elastic Beanstalk 環境での Amazon EC2 インスタンスの設定を編集できます。

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

Elastic Beanstalk コンソールで Node.js 環境を設定するには
  1. Elastic Beanstalk コンソールを開き、[Regions] (リージョン) リストで AWS リージョンを選択します。

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

    注記

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

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

  4. [更新、モニタリング、ログ] の設定カテゴリで、[編集] を選択します。

コンテナオプション

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

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

ログオプション

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

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

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

静的ファイル

パフォーマンスを向上させるために、[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 より前) を使用する Elastic Beanstalk Node.js 環境でのみサポートされます。

メモ
  • このトピックの情報は、Amazon Linux AMI (AL1) に基づくプラットフォームブランチにのみ適用されます。AL2023/AL2 プラットフォームブランチでは、以前の Amazon Linux AMI (AL1) プラットフォームバージョンと互換性がなく、別の構成設定が必要です。

  • 2022 年 7 月 18 日、Elastic Beanstalk では Amazon Linux AMI (AL1) に基づくプラットフォームブランチのステータスがすべて廃止されます。現在および完全にサポートされている Amazon Linux 2023 プラットフォームブランチへの移行の詳細については、「Elastic Beanstalk Linux アプリケーションを Amazon Linux 2023 または Amazon Linux 2 に移行する」を参照してください。

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

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

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

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

  • [Node command] (ノードコマンド) - 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 詳細については、「設定オプション」を参照してください。

Elastic Beanstalk Node.js 環境で (Amazon Linux 2 より前の) Amazon Linux AMI プラットフォームバージョンを使用している場合は、このセクションで具体的な設定と推奨事項を検討してください。

メモ
  • このトピックの情報は、Amazon Linux AMI (AL1) に基づくプラットフォームブランチにのみ適用されます。AL2023/AL2 プラットフォームブランチでは、以前の Amazon Linux AMI (AL1) プラットフォームバージョンと互換性がなく、別の構成設定が必要です。

  • 2022 年 7 月 18 日、Elastic Beanstalk では Amazon Linux AMI (AL1) に基づくプラットフォームブランチのステータスがすべて廃止されます。現在および完全にサポートされている Amazon Linux 2023 プラットフォームブランチへの移行の詳細については、「Elastic Beanstalk Linux アプリケーションを Amazon Linux 2023 または 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 に対する support がプラットフォームバージョンから削除された場合は、プラットフォームの更新に先立って、バージョニング設定を変更または削除する必要があります。これは、1 つ以上のバージョンの Node.js でセキュリティの脆弱性が検出された場合に発生することがあります

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

Elastic Beanstalk コンソールで環境の Node.js バージョンを設定するには
  1. Elastic Beanstalk コンソールを開き、[Regions] (リージョン) リストで AWS リージョンを選択します。

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

    注記

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

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

  4. [Update platform version] (プラットフォームのバージョンの更新) ダイアログボックスで、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/ノード-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 詳細については、「設定オプション」を参照してください。