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

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

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

AWS App Runner Node.js プラットフォームはマネージドランタイムを提供します。各ランタイムにより、Node.js バージョンに基づいてウェブアプリケーションを使用してコンテナを簡単に構築および実行できます。Node.js ランタイムを使用すると、App Runner はマネージド Node.js ランタイムイメージから開始します。このイメージは Amazon Linux Docker イメージに基づいており、Node.js のバージョンと一部のツールのランタイムパッケージが含まれています。App Runner は、このマネージドランタイムイメージをベースイメージとして使用し、アプリケーションコードを追加して Docker イメージを構築します。次に、このイメージをデプロイして、コンテナでウェブサービスを実行します。

App Runner コンソールまたは CreateService API オペレーションを使用してサービスを作成するときに、App Runner サービスのランタイムを指定します。ソースコードの一部としてランタイムを指定することもできます。コードリポジトリに含める App Runner 設定ファイルruntimeキーワードを使用します。マネージドランタイムの命名規則は <language-name><major-version> です。

有効な Node.js ランタイム名とバージョンについては、「」を参照してくださいNode.js ランタイムリリース情報

App Runner は、デプロイまたはサービスの更新ごとに、サービスのランタイムを最新バージョンに更新します。アプリケーションで特定のバージョンのマネージドランタイムが必要な場合は、App Runner 設定ファイル runtime-versionキーワードを使用して指定できます。メジャーバージョンやマイナーバージョンなど、任意のレベルのバージョンにロックできます。App Runner は、サービスのランタイムに対してのみ下位レベルの更新を行います。

Node.js ランタイムのバージョン構文: major[.minor[.patch]]

例:12.21.0

次の例は、バージョンロックを示しています。

  • 12.21 – メジャーバージョンとマイナーバージョンをロックします。App Runner はパッチバージョンのみを更新します。

  • 12.21.0 – 特定のパッチバージョンにロックします。App Runner はランタイムバージョンを更新しません。

Node.js ランタイム設定

マネージドランタイムを選択するときは、少なくとも コマンドを構築して実行するように設定する必要があります。App Runner サービスを作成または更新するときに設定します。これは、次のいずれかの方法を使用して実行できます。

  • App Runner コンソールの使用 – 作成プロセスまたは設定タブのビルドの設定セクションでコマンドを指定します。

  • App Runner API の使用CreateServiceまたは UpdateService API オペレーションを呼び出します。CodeConfigurationValues データ型の BuildCommandおよび StartCommandメンバーを使用してコマンドを指定します。

  • 設定ファイルの使用 – 最大 3 つのビルドフェーズで 1 つ以上のビルドコマンドと、アプリケーションを起動する 1 つの実行コマンドを指定します。追加のオプション設定があります。

設定ファイルの提供はオプションです。コンソールまたは API を使用して App Runner サービスを作成する場合、App Runner が作成時に設定を直接取得するか、設定ファイルから取得するかを指定します。

Node.js ランタイムでは、ソースリポジトリのルートpackage.jsonにある という名前の JSON ファイルを使用してビルドとランタイムを設定することもできます。このファイルを使用して、Node.js エンジンのバージョン、依存関係パッケージ、およびさまざまなコマンド (コマンドラインアプリケーション) を設定できます。npm や yarn などのパッケージマネージャーは、このファイルをコマンドの入力として解釈します。

例:

  • npm install は、 の dependenciesおよび devDependenciesノードで定義されたパッケージをインストールしますpackage.json

  • npm start または は、 のscripts/startノードで定義されたコマンドnpm run startを実行しますpackage.json

次は、package.json ファイルの例です。

{ "name": "node-js-getting-started", "version": "0.3.0", "description": "A sample Node.js app using Express 4", "engines": { "node": "12.21.0" }, "scripts": { "start": "node index.js", "test": "node test.js" }, "dependencies": { "cool-ascii-faces": "^1.3.4", "ejs": "^2.5.6", "express": "^4.15.2" }, "devDependencies": { "got": "^11.3.0", "tape": "^4.7.0" } }

の詳細についてはpackage.json、npm Docs ウェブサイトの「package.json ファイルの作成」を参照してください。

ヒント
  • package.json ファイルがstartコマンドを定義している場合は、次の例に示すように、App Runner 設定ファイルのrunコマンドとして使用できます。

    package.json

    { "scripts": { "start": "node index.js" } }

    apprunner.yaml

    run: command: npm start
  • 開発環境で を実行するnpm installと、npm によってファイル が作成されますpackage-lock.json。このファイルには、インストールしたばかりのパッケージバージョンのスナップショットが含まれています。その後、npm が依存関係をインストールすると、これらの正確なバージョンが使用されます。yarn をインストールすると、 yarn.lock ファイルが作成されます。これらのファイルをソースコードリポジトリにコミットして、アプリケーションが開発およびテストした依存関係のバージョンでインストールされていることを確認します。

  • App Runner 設定ファイルを使用して Node.js バージョンを設定し、 コマンドを開始することもできます。これを行うと、これらの定義は の定義よりも優先されますpackage.jsonnode のバージョンpackage.jsonと App Runner 設定ファイルruntime-versionの値の間に競合があると、App Runner ビルドフェーズが失敗します。

特定のランタイムバージョンのコールアウト

Node.js 18 (App Runner ビルドの改訂)

App Runner は、Python 3.11 および Node.js 18 のランタイムバージョンに基づいて、アプリケーションの更新されたビルドプロセスを実行するようになりました。アプリケーションがこれらのランタイムバージョンのいずれかで実行されている場合は、マネージドランタイムバージョンと App Runner ビルド「」を参照して、改訂されたビルドプロセスの詳細を確認してください。他のすべてのランタイムバージョンを使用するアプリケーションは影響を受けず、元のビルドプロセスを引き続き使用します。

Node.js ランタイムの例

次の例は、Node.js サービスを構築および実行するための App Runner 設定ファイルを示しています。

注記

これらの例で使用されるランタイムバージョンは 12.21.0 および 18.19.0 です。使用するバージョンに置き換えることができます。サポートされている最新の Node.js ランタイムバージョンについては、「」を参照してくださいNode.js ランタイムリリース情報

この例では、Node.js マネージドランタイムで使用できる最小限の設定ファイルを示しています。App Runner が最小限の設定ファイルで行う前提条件については、「」を参照してください設定ファイルの例

例 apprunner.yaml
version: 1.0 runtime: nodejs12 build: commands: build: - npm install --production run: command: node app.js

この例では、Node.js マネージドランタイムですべての設定キーを使用する方法を示します。

注記

これらの例で使用されるランタイムバージョンは 12.21.0 です。使用するバージョンに置き換えることができます。サポートされている最新の Node.js ランタイムバージョンについては、「」を参照してくださいNode.js ランタイムリリース情報

例 apprunner.yaml
version: 1.0 runtime: nodejs12 build: commands: pre-build: - npm install --only=dev - node test.js build: - npm install --production post-build: - node node_modules/ejs/postinstall.js env: - name: MY_VAR_EXAMPLE value: "example" run: runtime-version: 12.21.0 command: node app.js network: port: 8000 env: APP_PORT env: - name: MY_VAR_EXAMPLE value: "example"

この例では、 で Node.js マネージドランタイムを使用するすべての設定キーの使用を示していますapprunner.yaml。この例では、Node.js のこのバージョンでは、改訂された App Runner ビルドが使用されるため、 pre-runセクションが含まれています。

pre-run パラメータは、改訂された App Runner ビルドでのみサポートされます。アプリケーションが元の App Runner ビルドでサポートされているランタイムバージョンを使用している場合は、このパラメータを設定ファイルに挿入しないでください。詳細については、「マネージドランタイムバージョンと App Runner ビルド」を参照してください。

注記

これらの例で使用されるランタイムバージョンは 18.19.0 です。使用するバージョンに置き換えることができます。サポートされている最新の Node.js ランタイムバージョンについては、「」を参照してくださいNode.js ランタイムリリース情報

例 apprunner.yaml
version: 1.0 runtime: nodejs18 build: commands: pre-build: - npm install --only=dev - node test.js build: - npm install --production post-build: - node node_modules/ejs/postinstall.js env: - name: MY_VAR_EXAMPLE value: "example" run: runtime-version: 18.19.0 pre-run: - node copy-global-files.js command: node app.js network: port: 8000 env: APP_PORT env: - name: MY_VAR_EXAMPLE value: "example"

この例では、Grunt で開発された Node.js アプリケーションを設定する方法を示します。Grunt はコマンドライン JavaScript タスクランナーです。反復タスクを実行し、プロセスの自動化を管理して、人為的ミスを減らします。Grunt プラグインと Grunt プラグインは、npm を使用してインストールおよび管理されます。Grunt を設定するには、ソースリポジトリのルートに Gruntfile.js ファイルを含めます。

例 package.json
{ "scripts": { "build": "grunt uglify", "start": "node app.js" }, "devDependencies": { "grunt": "~0.4.5", "grunt-contrib-jshint": "~0.10.0", "grunt-contrib-nodeunit": "~0.4.1", "grunt-contrib-uglify": "~0.5.0" }, "dependencies": { "express": "^4.15.2" }, }
例 Gruntfile.js
module.exports = function(grunt) { // Project configuration. grunt.initConfig({ pkg: grunt.file.readJSON('package.json'), uglify: { options: { banner: '/*! <%= pkg.name %> <%= grunt.template.today("yyyy-mm-dd") %> */\n' }, build: { src: 'src/<%= pkg.name %>.js', dest: 'build/<%= pkg.name %>.min.js' } } }); // Load the plugin that provides the "uglify" task. grunt.loadNpmTasks('grunt-contrib-uglify'); // Default task(s). grunt.registerTask('default', ['uglify']); };
例 apprunner.yaml
注記

これらの例で使用されるランタイムバージョンは 12.21.0 です。使用するバージョンに置き換えることができます。サポートされている最新の Node.js ランタイムバージョンについては、「」を参照してくださいNode.js ランタイムリリース情報

version: 1.0 runtime: nodejs12 build: commands: pre-build: - npm install grunt grunt-cli - npm install --only=dev - npm run build build: - npm install --production run: runtime-version: 12.21.0 command: node app.js network: port: 8000 env: APP_PORT