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

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

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

このトピックでは、Elastic Beanstalk で Node.js アプリケーションを設定、構築、実行する方法について説明します。

AWS Elastic Beanstalk は、Node.js プログラミング言語のさまざまなバージョンの多数のプラットフォームブランチをサポートしています。完全なリストについては、プラットフォームドキュメントの「Node.js」を参照してください。 AWS Elastic Beanstalk

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

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

    注記

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

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

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

コンテナオプション

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

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

ログオプション

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

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

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

静的ファイル

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

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

環境プロパティ

環境プロパティセクションを使用して、アプリケーションを実行している Amazon EC2インスタンスの環境設定を指定します。これらの設定は、キーバリューのペアでアプリケーションに渡されます。

で実行されるNode.js環境内では AWS Elastic Beanstalk、 を実行して環境変数にアクセスできますprocess.env.ENV_VARIABLE

var endpoint = process.env.API_ENDPOINT

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

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

次のコンソールソフトウェア設定カテゴリは、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 プラットフォームバージョンのAMINode.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.jsAmazon 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失敗します。新しい環境を作成する必要がないようにするには、NodeVersion設定オプションを古いプラットフォームバージョンと新しいプラットフォームバージョンの両方でサポートされている Node.js バージョンに変更するか、オプション設定 を削除してからプラットフォームの更新を実行します。

Elastic Beanstalk コンソールで環境の Node.js バージョンを設定するには
  1. Elastic Beanstalk コンソール を開き、リージョンリストで を選択します 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。詳細については、「設定オプション」を参照してください。