アプリケーションの依存関係の設定
アプリケーションは、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
キーワードを使用して、スタートコマンドを指定します。これで、aws:elasticbeanstalk:container:nodejs
名前空間のレガシーNodeCommand
オプション の代わりに scripts
キーワードが使用されるようになりました。
例 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 を使用したセマンティック・バージョニングpackage.json
ファイルのengines
キーワードで、aws:elasticbeanstalk:container:nodejs
名前空間の レガシーNodeVersion
オプションが置き換えられます。
例 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 で support されているバージョン範囲オプションを使用すると、柔軟性が向上します。各プラットフォームブランチの有効な Node.js バージョンについては、AWS Elastic Beanstalk プラットフォームガイドの「Node.js」を参照してください。
デフォルトでは、Elastic Beanstalk は依存関係を本稼働モードでインストールします (npm install
--production
)。環境インスタンスで開発の依存関係をインストールする場合は、NPM_USE_PRODUCTION
環境プロパティを false
に設定します。
使用しているバージョンの Node.js に対する support がプラットフォームバージョンから削除された場合は、プラットフォームの更新に先立って、Node.js バージョン設定を変更または削除する必要があります。これは、1 つ以上のバージョンの Node.js でセキュリティの脆弱性が検出された場合に発生することがあります
この場合、設定された Node.js バージョンをsupport していないプラットフォームの新しいバージョンに更新しようとすると失敗します。新しい環境を作成する必要がないようにするには、package.json
の Node.js のバージョニング設定を、古いプラットフォームバージョンと新しいプラットフォームバージョンの両方で support されている Node.js バージョンに変更します。このトピックで前述したように、support されているバージョンを含む 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 ファイルで指定された依存関係をインストールしないようにします。