Node.js マネージランタイムの使用 - AWS App Runner

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

Node.js マネージランタイムの使用

AWS App Runnerは、Node.js マネージドランタイムを提供します。ランタイムにより、Node.json ベースの Web アプリケーションでコンテナイビルドして実行できます。Node.js ランタイムを使用すると、App Runner は管理された Node.js ランタイムイメージで起動します。このイメージは、Amazon Linux Docker イメージで、Node.js ランタイムパッケージといくつかのツールが含まれています。App Runner は、この管理されたランタイムイメージをベースイメージとして使用し、アプリケーションコードを追加して Docker イメージを構築します。次に、このイメージをデプロイして、コンテナーで Web サービスを実行します。

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

有効な Node.js ランタイム名については、Node.js ランタイムリリース情報

App Runner は、デプロイメントまたはサービスの更新ごとに、サービスのランタイムを最新バージョンに更新します。アプリケーションで特定のバージョンの管理対象ランタイムが必要な場合は、runtime-versionキーワードのアプリランナー構成ファイル。マイナーバージョンを<major><minor>を使用して、メジャーバージョンとマイナーバージョンをロックします (App Runner はパッチバージョンのみを更新します)。特定のパッチレベルを<major><minor><patch>を使用して、特定のランタイムバージョンでサービスをロックします(App Runnerはランタイムを更新しません)。

Node.js ランタイム設定

マネージランタイムを選択するときは、最低限、ビルドコマンドと実行コマンドを構成する必要があります。これらの設定は、作成中または更新App Runner サービスをサポートします。それを行うにはいくつかの方法があります。

  • アプリランナーコンソールの使用— コマンドをビルドの設定セクションに移動します。

  • アプリランナー API の使用— を呼び出します。CreateServiceまたはUpdateService。コマンドを指定するには、BuildCommandおよびStartCommandメンバーのコーデコンフィグレーション値データ型

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

設定ファイルの指定は任意です。コンソールまたは API を使用して App Runner サービスを作成する場合、App Runner が構成設定を作成中に直接取得するか、構成ファイルから取得するかを指定します。

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

次に例を示します。

  • npm installによって定義されたパッケージをインストールするdependenciesおよびdevDependenciesノードのpackage.json

  • npm startまたはnpm run startによって定義されたコマンドを実行します。scripts/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.18.4" }, "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「」を参照してください。package.json ガイドNode.js ウェブサイトの「」を参照してください。

Tips
  • もしあなたのpackage.jsonファイルは、startコマンドを 1 つだけ使用する場合は、runコマンドを App Runner 設定ファイルに追加します。

    package.json

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

    apprunner.yaml

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

  • App Runner 構成ファイルを使用して、Node.js のバージョンと start コマンドを構成することもできます。これを行うと、これらの定義はpackage.json。間の競合nodeバージョンpackage.jsonruntime-version値を設定すると、アプリランナーのビルドフェーズが失敗します。

Node.js ランタイムスクライオン

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

この例では、Node.js 管理ランタイムで使用できる最小構成ファイルを示します。App Runner が最小限の設定ファイルで行う前提条件については、設定ファイルの例

例 apprunner.yaml
version: 1.0 runtime: nodejs12 build: commands: build: - npm install --production run: command: node app.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.18.4 command: node app.js network: port: 8000 env: APP_PORT env: - name: MY_VAR_EXAMPLE value: "example"

この例では、Grunt で作成された Node.js アプリケーションを設定する方法を示しています。うなり声はコマンドラインJavaScriptタスクランナーです。反復的なタスクを実行し、プロセスの自動化を管理して、人的ミスを軽減します。うなり声とうなり声のプラグインがインストールされ、npmを使用して管理されています。あなたが含めることによって、うなり声を設定します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
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.18.4 command: node app.js network: port: 8000 env: APP_PORT