アプリケーションの依存関係の設定 - AWS Elastic Beanstalk

アプリケーションの依存関係の設定

アプリケーションは、require() ステートメントで指定したモジュールのように、いくつかの Node.js モジュールに依存している可能性があります。これらの依存関係は、package.json ファイルを使用して指定できます。または、アプリケーションの依存関係をソースバンドルに含め、アプリケーションを用いてデプロイすることができます。これら 2 つの代替方法については、次のセクションで詳しく説明します。

package.json ファイルを使用した Node.js の依存関係の指定

プロジェクトソースのルートに package.json ファイルを含めることにより、依存関係パッケージを指定し、開始コマンドを指定します。package.json ファイルがある場合、Elastic Beanstalk は npm install を実行して依存関係をインストールします。また、start コマンドを使用してアプリケーションを起動します。package.jsonファイルの詳細については、Node.js ウェブサイトの 「package.json ガイド」を参照してください。

scripts キーワードを使用して、開始コマンドを指定します。これで、scripts 名前空間のレガシーオプション NodeCommand の代わりに aws:elasticbeanstalk:container:nodejs キーワードが使用されるようになりました。

例 package.json – Express

{ "name": "my-app", "version": "0.0.1", "private": true, "dependencies": { "ejs": "latest", "aws-sdk": "latest", "express": "latest", "body-parser": "latest" }, "scripts": { "start": "node app.js" } }

engines ファイル内の package.json キーワードを使用して、アプリケーションで使用する Node.js のバージョンを指定します。npm 表記を使用してバージョン範囲を指定することもできます。バージョン範囲の構文の詳細については、Node.js のウェブサイトの「npm を使用したセマンティックバージョニング」を参照してください。Node.js engines ファイルの package.json キーワードで、NodeVersion 名前空間の aws:elasticbeanstalk:container:nodejs レガシーオプションが置き換えられます。

package.json – 単一の Node.js バージョン

{ ... "engines": { "node" : "14.16.0" } }

package.json – Node.js バージョン範囲

{ ... "engines": { "node" : ">=10 <11" } }

バージョン範囲が指定されると、Elastic Beanstalk は、プラットフォームにあるバージョンの中から、範囲内で利用可能な最新の Node.js バージョンをインストールします。この例では、範囲は、バージョンがバージョン 10 以上で、バージョン 11 より小さくなければならないことを示しています。その結果、Elastic Beanstalk は、サポートされているプラットフォームで利用可能な最新の Node.js バージョン 10.x.y をインストールします。

指定できるのは、プラットフォームブランチに対応する Node.js バージョンのみであることに注意してください。例えば、Node.js 14 プラットフォームブランチを使用している場合は、14.x.y Node.js バージョンのみを指定できます。npm でサポートされているバージョン範囲オプションを使用すると、柔軟性が向上します。各プラットフォームブランチの有効な Node.js バージョンについては、AWS Elastic Beanstalk プラットフォームガイドの「Node.js」を参照してください。

デフォルトでは、Elastic Beanstalk は依存関係を本稼働モードでインストールします (npm install --production)。環境インスタンスで開発の依存関係をインストールする場合は、NPM_USE_PRODUCTION 環境プロパティfalse に設定します。

注記

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

この場合、設定された Node.js バージョンをサポートしていないプラットフォームの新しいバージョンに更新しようとすると失敗します。新しい環境を作成する必要がないようにするには、package.json の Node.js のバージョン設定を、古いプラットフォームバージョンと新しいプラットフォームバージョンの両方でサポートされている Node.js バージョンに変更します。このトピックで前述したように、サポートされているバージョンを含む Node.js のバージョン範囲を指定することもできます。また、設定を削除して、新しいソースバンドルをデプロイするオプションもあります。

node_modules ディレクトリに Node.js の依存関係を含める

アプリケーションコードとともに依存関係パッケージを環境インスタンスにデプロイするには、プロジェクトソースのルートにある node_modules という名前のディレクトリにそれらを含めます。Node.js はこのディレクトリ内で依存関係を探します。詳細については、Node.js ドキュメントの「node_modules フォルダからの読み込み」を参照してください。

注記

node_modules ディレクトリを Amazon Linux 2 Node.js プラットフォームバージョンにデプロイすると、Elastic Beanstalk は独自の依存関係パッケージが提供されていると見なし、package.json ファイルで指定された依存関係をインストールしないようにします。