Node.js スタックの初回作成 - AWS OpsWorks

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

Node.js スタックの初回作成

重要

AWS OpsWorks Stacks は新規顧客を受け付けなくなりました。既存のお客様は、2024 年 5 月 26 日までは、通常どおり OpsWorks コンソール、API、CLI、および CloudFormation リソースを使用できます。その時点で廃止されます。この移行に備えて、できるだけ早くスタックを AWS Systems Manager に移行することをおすすめします。詳細については、「AWS OpsWorks Stacks サポート終了に関する FAQ」および「AWS Systems Manager アプリケーションマネージャへの AWS OpsWorks Stacks アプリケーションの移行」を参照してください。

この例では、Node.js アプリケーションサーバーをサポートする Linux スタックの作成方法と、シンプルなアプリケーションのデプロイ方法について説明します。スタックは以下のコンポーネントから構成されます。

前提条件

このウォークスルーでは、以下のことを前提としています。

  • AWS アカウントがあり、AWS OpsWorks スタックの基本的な使用方法を理解している。

    AWS OpsWorks スタックまたは AWS に慣れていない場合は、入門チュートリアル「Chef 11 Linux スタックの使用開始」を完了して、基本事項を学習してください。

  • Node.js アプリケーションの基本的な実装方法を理解している。

    Node.js に慣れていない場合は、「Node: Up and Running」などの入門チュートリアルを完了して、基本事項を学習してください。

  • この例で使用する予定の AWS リージョンで 1 つ以上のスタックを作成済みである。

    リージョンで初めてスタックを作成すると、AWS OpsWorks スタックによって、レイヤータイプごとに Amazon Elastic Compute Cloud (Amazon EC2) セキュリティグループが作成されます。Amazon RDS データベース (DB) インスタンスを作成するには、これらのセキュリティグループが必要です。AWS OpsWorks スタックに慣れていない場合は、「Chef 11 Linux スタックの使用開始」のチュートリアルで使用したのと同じリージョンをこの例でも使用することをお勧めします。新しいリージョンを使用する場合は、リージョンに新しいスタックを作成します。このスタックにレイヤーやインスタンスは必要ありません。スタックを作成すると、AWS OpsWorks スタックによって一連のセキュリティグループがリージョンに自動的に追加されます。

  • デフォルトの VPC にスタックを作成する。

    このウォークスルーには EC2-Classic を使用できますが、一部の詳細はわずかに異なります。たとえば EC2-Classic では、サブネットではなくインスタンスのアベイラビリティーゾーン (AZ) を指定します。

  • (IAM) ユーザーが AWS OpsWorksスタックに対する完全アクセス権限を持っています。

    セキュリティ上の理由から、ウォークスルー用にアカウントのルート認証情報を指定しないことを強くお勧めします。代わりに、AWS OpsWorks スタックの完全アクセス権限を持つユーザーを作成し、その認証情報を AWS OpsWorks スタックで使用します。詳細については、「 管理者ユーザーの作成」を参照してください。

アプリケーションの実装

このチュートリアルでは、Amazon RDS DB インスタンスに接続し、インスタンスのデータベースを一覧表示するシンプルな [Express] (エクスプレス) アプリケーションを使用します。

アプリケーションを実装するには、ワークステーション上の使いやすい場所に nodedb という名前のディレクトリを作成し、以下に示す 3 つのファイルを追加します。

パッケージディスクリプター

アプリケーションのパッケージディスクリプターを作成するには、以下に示す内容の package.json というファイルを nodedb ディレクトリに追加します。package.json は、Express アプリケーションに必要であり、アプリケーションのルートディレクトリに配置されている必要があります。

{ "name": "Nodejs-DB", "description": "Node.js example application", "version": "0.0.1", "dependencies": { "express": "*", "ejs": "*", "mysql": "*" } }

この例の package.json は、ほぼ最小限の内容です。必要な name 属性と version 属性が定義され、従属パッケージがリストされています。

  • express は、Express パッケージを参照しています。

  • ejs は、テキストを HTML レイアウトファイルに挿入するためにアプリケーションで使用される EJS パッケージを参照しています。

  • mysql は、RDS インスタンスに接続するためにアプリケーションで使用される node-mysql パッケージを参照しています。

パッケージディスクリプターファイルの詳細については、「package.json」を参照してください。

レイアウトファイル

アプリケーションのレイアウトファイルを作成するには、views ディレクトリに nodedb ディレクトリを追加し、以下に示す内容の views というファイルを index.html に追加します。

<!DOCTYPE html> <html> <head> <title>AWS Opsworks Node.js Example</title> </head> <body> <h1>AWS OpsWorks Node.js Example</h1> <p>Amazon RDS Endpoint: <i><%= hostname %></i></p> <p>User: <i><%= username %></i></p> <p>Password: <i><%= password %></i></p> <p>Port: <i><%= port %></i></p> <p>Database: <i><%= database %></i></p> <p>Connection: <%= connectionerror %></p> <p>Databases: <%= databases %></p> </body> </html>

この例のファイルレイアウトファイルは、Amazon RDS からのデータを表示するシンプルな HTML ドキュメントです。各 <%= ... => 要素は、次に作成するコードファイル内で定義されている変数の値を示します。

コードファイル

アプリケーションのコードファイルを作成するには、以下に示す内容の server.js ファイルを nodedb ディレクトリに追加します。

重要

AWS OpsWorks スタックでは、Node.js アプリケーションのメインコードファイルを server.js という名前にし、アプリケーションのルートフォルダに置く必要があります。

var express = require('express'); var mysql = require('mysql'); var dbconfig = require('opsworks'); //[1] Include database connection data var app = express(); var outputString = ""; app.engine('html', require('ejs').renderFile); //[2] Get database connection data app.locals.hostname = dbconfig.db['host']; app.locals.username = dbconfig.db['username']; app.locals.password = dbconfig.db['password']; app.locals.port = dbconfig.db['port']; app.locals.database = dbconfig.db['database']; app.locals.connectionerror = 'successful'; app.locals.databases = ''; //[3] Connect to the Amazon RDS instance var connection = mysql.createConnection({ host: dbconfig.db['host'], user: dbconfig.db['username'], password: dbconfig.db['password'], port: dbconfig.db['port'], database: dbconfig.db['database'] }); connection.connect(function(err) { if (err) { app.locals.connectionerror = err.stack; return; } }); // [4] Query the database connection.query('SHOW DATABASES', function (err, results) { if (err) { app.locals.databases = err.stack; } if (results) { for (var i in results) { outputString = outputString + results[i].Database + ', '; } app.locals.databases = outputString.slice(0, outputString.length-2); } }); connection.end(); app.get('/', function(req, res) { res.render('./index.html'); }); app.use(express.static('public')); //[5] Listen for incoming requests app.listen(process.env.PORT);

この例では、データベース接続情報を表示し、データベースサーバーに照会して、サーバーのデータベースを表示しています。これは、必要に応じてデータベースとやり取りするために簡単に一般化することができます。コード内の番号付きのコメントに対応する注釈を以下に示します。

[1] Include database connection data (データベース接続データを含める)

この require ステートメントでは、データベース接続データを含めています。後で説明しますが、データベースインスタンスをアプリケーションにアタッチすると、AWS OpsWorks スタックによって以下のような内容の接続データが opsworks.js というファイルに記述されます。

exports.db = { "host":"nodeexample.cdlqlk5uwd0k.us-west-2.rds.amazonaws.com", "database":"nodeexampledb", "port":3306, "username":"opsworksuser", "password":"your_pwd", "reconnect":true, "data_source_provider":"rds", "type":"mysql"}

opsworks.js はアプリケーションの shared/config ディレクトリ /srv/www/app_shortname/shared/config にあります。ただし、AWS OpsWorks スタックによって opsworks.js へのシンボリックリンクがアプリケーションのルートディレクトリに配置されるため、require 'opsworks' を使用するだけで、このオブジェクトをインクルードすることができます。

[2] Get database connection data (データベース接続データを取得する)

これら一連のステートメントは、opsworks.js に記述されている接続データを表示します。そのために、db オブジェクトの値を一連の app.locals プロパティに割り当てています。これらのプロパティはそれぞれ、index.html ファイル内の <%= ... %> 要素のいずれかに対応しています。レンダリング後のドキュメントでは、<%= ... %> 要素が、対応するプロパティ値に置き換わります。

[3] Connect to the Amazon RDS instance (Amazon RDS インスタンスに接続する)

この例では、node-mysql を使用してデータベースにアクセスしています。データベースに接続するために、接続データを connection に渡して createConnection オブジェクトを作成し、connection.connect を呼び出して接続を確立しています。

[4] Query the database (データベースを照会する)

接続を確立した後、データベースを照会するために connection.query 呼び出します。この例では単純に、サーバーのデータベース名を照会しています。query は、データベース名を Database プロパティに割り当てて、各データベースに対応する results オブジェクトの配列を返します。この例では、名前を連結して app.locals.databases, に割り当てます。これにより、レンダリングされた HTML ページに一覧が表示されます。

この例では、データベースが 5 つあります。1 つは、RDS インスタンスの作成時に指定した nodeexampledb データベースで、他の 4 つは、Amazon RDS によって自動的に作成されます。

[5] Listen for incoming requests(受信されるリクエストをリッスンする)

最後のステートメントは、指定されたポートで受信されるリクエストをリッスンします。明示的なポート値を指定する必要はありません。スタックにアプリケーションを追加する際には、アプリケーションで HTTP リクエストと HTTPS リクエストのいずれをサポートするか指定します。AWS OpsWorksスタックはこれを受けて、PORT 環境変数が 80 (HTTP) または 443 (HTTPS) に設定され、この変数をアプリケーションで使用できます。

他のポートでリッスンすることは可能ですが、Node.js アプリケーションサーバーレイヤーの組み込みセキュリティグループ AWSOpsWorks--nodejs-App-Server では、ポート 80、443、22 (SSH) へのインバウンドユーザートラフィックのみが許可されます。他のポートへの着信ユーザートラフィックを許可するには、適切なインバウンドルールを使用してセキュリティグループを作成し、Node.js アプリケーション-サーバーレイヤーに割り当てます。組み込みのセキュリティグループを編集することでインバウンドルールを変更しないでください。AWS OpsWorks スタックでは、スタックを作成するたびに組み込みセキュリティグループが標準設定で上書きされるため、その変更内容は失われます。

注記

関連するアプリケーションを作成または更新するときに、カスタムの環境変数をアプリケーションに関連付けることができます。また、カスタムの JSON とカスタムレシピを使用してデータをアプリケーションに渡すこともできます。詳細については、「アプリケーションへのデータの引き渡し」を参照してください。

データベースサーバーとロードバランサーの作成

この例では、Amazon RDS データベースサーバーと Elastic Load Balancing ロードバランサーのインスタンスを使用しています。各インスタンスは別々に作成し、スタックに組み込む必要があります。このセクションでは、新しいデータベースとロードバランサーのインスタンスを作成する方法を説明します。既存のインスタンスを使用することもできますが、この手順を読み、そのインスタンスが正しく設定されているか確認することをお勧めします。

この例で十分使用できる、最小設定の RDS DB インスタンスを作成する方法を次に説明します。詳細については、「Amazon RDS ユーザーガイド」を参照してください。

RDS DB インスタンスを作成するには
  1. コンソールを開きます。

    Amazon RDS console (Amazon RDS コンソール) を開き、リージョンを米国西部 (オレゴン)に設定します。ナビゲーションペインで [RDS Dashboard] を選択し、[Launch DB Instance] を選択します。

  2. データベースエンジンを指定します。

    データベースエンジンとして、[MySQL Community Edition] を選択します。

  3. マルチ AZ 配置を拒否します。

    [No, this instance...] を選択し、[Next] を選択します。この例にマルチ AZ 配置は必要ありません。

  4. 基本的な設定を指定します。

    [DB Instance Details] ページで、次の設定を指定します。

    • DB Instance Class: db.t2.micro

    • Multi-AZ Deployment: No

    • ストレージ割り当て: 5 GB

    • DB インスタンス識別子: nodeexample

    • マスターユーザーの名前: opsworksuser

    • [Master Password]: 任意のパスワード

    後で使用できるようにインスタンス識別子、ユーザー名、およびパスワードを書き留め、その他のオプションについてはデフォルト設定をそのままにして、[Next] を選択します。

  5. 詳細設定を指定します。

    [Configure Advanced Settings] ページで、以下の設定を指定します。

    • データベース名: nodeexampledb

    • DB セキュリティグループ (複数): AWS-OpsWorksDB-マスターサーバー

    注記

    AWSOpsWorks-DB-Master-Server セキュリティグループでは、スタックのインスタンスのみがデータベースにアクセスできます。データベースに直接アクセスするには、適切なインバウンドルールを指定して追加のセキュリティグループを RDS DB インスタンスにアタッチします。詳細については、「Amazon RDS セキュリティグループ」を参照してください。VPC にインスタンスを配置することによってアクセスを制御することもできます。詳細については、「VPC でのスタックの実行」を参照してください。

    後で使用できるようにデータベース名を書き留め、その他の設定についてはデフォルト値をそのままにして、[Launch DB Instance] を選択します。

以下の手順では、この例の Elastic Load Balancing ロードバランサーを作成する方法を説明します。詳細については、Elastic Load Balancing ユーザーガイドを参照してください。

ロードバランサーを作成する方法
  1. Amazon EC2 コンソールを開きます。

    Amazon EC2 console (Amazon EC2 コンソール) を開き、リージョンが米国西部 (オレゴン) に設定されていることを確認します。ナビゲーションペインで、[Load Balancers] を選択し、[Create Load Balancer] を選択します。

  2. ロードバランサーを定義します。

    [Define Load Balancer] ページで、以下の設定を指定します。

    • 名前 - Node-LB

    • Create LB Inside (内部にLBを作成) – My Default VPC (マイデフォルトのVPC)

    その他のオプションについてはデフォルト設定をそのままにして、[Next] を選択します。

  3. セキュリティグループを割り当てます。

    [Assign Security Groups] ページで、以下のグループを指定します。

    • デフォルト VPC セキュリティグループ

    • AWS-OpsWorks-nodejs-App-Server

    [次へ] をクリックします。[Configure Security Settings] ページで、[Next] を選択します。この例にセキュアリスナーは必要ありません。

  4. ヘルスチェックを設定します。

    [Configure Health Check (ヘルスチェックの設定)] ページで、[Ping Path (ping パス)] を / に設定し、その他の設定についてはデフォルト値をそのままにします。[次へ] をクリックします。[Add EC2 Instances] ページで、[Next] を選択します。[Add Tags] (タグの追加) ページで、[Review and Create] (確認して作成) を選択します。AWS OpsWorksスタックによって、EC2 インスタンスをロードバランサーに追加するタスクは処理されるため、この例のタグは必要ありません。

  5. ロードバランサーを作成します。

    [Review] ページで、[Create] を選択してロードバランサーを作成します。

スタックの作成

必要なコンポーネントがすべて揃ったので、スタックを作成できます。

スタックを作成するには
  1. AWS OpsWorks スタックコンソールにサインインします。

    AWS OpsWorks スタックコンソールにサインインし、[Add Stack (スタックを追加)] を選択します。

  2. スタックを作成します。

    新しいスタックを作成するには、[Chef 11 stack] を選択して、以下の設定を指定します。

    • NodeStack

    • [リージョン]米国西部 (オレゴン)

      スタックは任意の AWS リージョンに作成できますが、このチュートリアルでは米国西部 (オレゴン) をお勧めします。

    [Add Stack] を選択します。スタック設定の詳細については、「新しいスタックを作成する」を参照してください。

  3. ロードバランサーがアタッチされた Node.js App Server layer を追加します。

    NodeStack ページで、レイヤー を追加を選択し、次の設定を指定します。

    • Layer type (レイヤータイプ) – Node.js App Server (Node.js アプリケーションサーバー)

    • Elastic Load Balancer (Elastic ロードバランサー) – Node-LB (ノード-LB)

    その他の設定についてはデフォルト値をそのままにして、[Add Layer] を選択します。

  4. インスタンスをレイヤーに追加して起動します。

    ナビゲーションペインで、[Instances] を選択し、次の手順に従って 2 つのインスタンスを Rails アプリケーションサーバーレイヤーに追加します。

    1. Node.js App Server (Node.js アプリケーションサーバー) で、Add instance (インスタンスの追加) を選択します。

      [Size] を [t2.micro] に設定し、その他の設定についてはデフォルト値をそのままにして、[Add Instance] を選択します。

    2. [+Instance] を選択し、2 番目の t2.micro インスタンスを別のサブネット内のレイヤーに追加します。

      これにより、インスタンスが別のアベイラビリティーゾーン (AZ) に配置されます。

    3. [Add instance] を選択します。

    4. 両方のインスタンスを起動するには、[Start All Instances] を選択します。

    Elastic Load Balancing ロードバランサーをこのレイヤーに割り当てました。インスタンスがオンライン状態に移行またはオンライン状態から移行すると、AWS OpsWorks スタックによって自動的にそのインスタンスがロードバランサーに登録または登録解除されます。

    注記

    本稼働スタックでは、アプリケーションサーバーインスタンスを複数の AZ に分散することをお勧めします。分散しておくと、ユーザーが 1 つの AZ に接続できない場合、着信トラフィックがロードバランサーによって別のゾーンにルーティングされるため、サイトの機能が続行します。

  5. RDS DB インスタンスをスタックに登録します。

    ナビゲーションペインで、[Resources] を選択し、次の手順に従って RDS DB インスタンスをスタックに登録します。

    1. [RDS] タブを選択し、[Show Unregistered RDS DB instances] を選択します。

    2. nodeexampledb インスタンスを選択し、以下の設定を指定します。

      • User (ユーザー) – インスタンスの作成時に指定したマスターユーザー名 (この例では、)opsworksuser

      • [Password] (パスワード) – インスタンスの作成時に指定したマスターパスワード。

    3. [Register with Stack] (スタックに登録) を選択し、RDS DB インスタンスを [Amazon RDS service layer] (Amazon RDS サービスレイヤー) としてスタックに追加します。

    警告

    AWS OpsWorks スタックは、[User (ユーザー)] の値や [Password (パスワード)] の値を検証せずに、アプリケーションに渡すだけです。これらを誤って入力すると、アプリケーションがデータベースに接続できません。

    RDS DB インスタンスを [Amazon RDS service layer] (Amazon RDS サービスレイヤー) としてスタックに追加するには、「Register with Stack」(スタックに登録) を選択します。

アプリケーションのデプロイ

アプリケーションはリモートリポジトリに保存する必要があります。アプリケーションをデプロイする場合、AWS OpsWorks スタックはコードおよび関連するファイルをリポジトリからアプリケーションサーバーインスタンスにデプロイします。便宜上、この例では、パブリック Amazon Simple Storage Service (Amazon S3) アーカイブをリポジトリとして使用していますが、Git や Subversion など、いくつか他の種類のリポジトリも使用できます。詳細については、「Application Source」を参照してください。

アプリケーションをデプロイするには
  1. アプリケーションをアーカイブファイルにパッケージ化します。

    .zip ディレクトリおよびサブディレクトリの nodedb アーカイブを nodedb.zip という名前で作成します。gzip、bzip2、tarball など、他の種類のアーカイブファイルを使用することもできます。AWS OpsWorks スタックでは非圧縮の tarball がサポートされないことに注意してください。詳細については、「Application Source」を参照してください。

  2. アーカイブファイルを Amazon S3 にアップロードします。

    nodedb.zip を Amazon S3 バケットにアップロードし、ファイルをパブリックにして、後で使用できるようにファイルの URL をコピーします。バケットの作成方法とファイルのアップロード方法の詳細については、「Amazon Simple Storage Service の使用開始」を参照してください。

    注記

    AWS OpsWorks スタックでは Amazon S3バケットからプライベートファイルをデプロイすることもできますが、この例では、わかりやすくするためにパブリックファイルを使用しています。詳細については、「Application Source」を参照してください。

  3. AWS OpsWorks スタックアプリケーションを作成します。

    AWS OpsWorks スタックコンソールに戻り、ナビゲーションペインで [Apps (アプリ)] を選択し、[Add an app (アプリを追加)] を選択します。以下の設定を指定します。

    • [Name] (名前) – NodeDB

      この文字列は、アプリケーションの表示名です。多くの目的でアプリケーションの短縮名が必要ですが、これは、表示名からすべての文字を小文字にして区切り文字を取り除くことで AWS OpsWorks スタックによって生成されます。この例の場合、短縮名は nodedb になります。アプリケーションの短縮名を確認するには、アプリケーションの作成後、[Apps] ページでアプリケーションを選択して詳細ページを表示します。

    • Type (タイプ) – Node.js

    • Data source type (データソースタイプ) – RDS

    • Database instance (データベースインスタンス) - 登録しておいた Amazon RDS DB インスタンスを選択します。

    • Database name (データベース名) - 作成しておいたデータベースの名前を指定します (この例の場合は nodeexampledb)。

    • Repository type (リポジトリタイプ) - Http Archive

      パブリック Amazon S3 ファイルには、このリポジトリタイプを使用する必要があります。S3 Archive は、プライベートアーカイブにのみ使用する種類です。

    • Repository URL (リポジトリの URL) - アーカイブファイルの Amazon S3 URL。

    残りの設定にはデフォルト値を使用し、[Add App] をクリックしてアプリケーションを作成します。

  4. アプリケーションをデプロイします。

    [Apps] ページに移動し、NodeDB アプリケーションの [Actions] 列で、[deploy] を選択します。次に、[Deploy] (デプロイ) を選択して、アプリケーションをサーバーインスタンスにデプロイします。AWS OpsWorksスタックによって各インスタンスに対して Deploy レシピが実行されます。これにより、アプリケーションがリポジトリからダウンロードされ、サーバーが再起動されます。各インスタンスに緑色のチェックマークが付き、[Status] が [successful] であれば、デプロイが完了しており、アプリケーションでリクエストの処理を開始できる状態になっています。

    注記

    デプロイが失敗した場合は、[Log] (ログ) 列で [show] (表示) を選択すると、デプロイメントの Chef ログが表示されます。エラー情報は下の方にあります。

  5. アプリケーションを開きます。

    アプリケーションを開くには、[Layers] (レイヤー) を選択し、ロードバランサーを選択して、ロードバランサーの DNS 名を選択します。これにより、HTTP リクエストがロードバランサーに送信されます。次のような内容が表示されます。

注記

アプリケーションは、セットアップ時に AWS OpsWorks スタックによって自動的に新しいインスタンスにデプロイされます。オンラインインスタンスに対してのみ、手動のデプロイが必要になります。詳細については、「アプリケーションのデプロイ」を参照してください。高度なデプロイ方法など、デプロイ全般については、「アプリケーションとクックブックの管理とデプロイ」を参照してください。

次のステップ

重要

AWS OpsWorks Stacks は新規顧客を受け付けなくなりました。既存のお客様は、2024 年 5 月 26 日までは、通常どおり OpsWorks コンソール、API、CLI、および CloudFormation リソースを使用できます。その時点で廃止されます。この移行に備えて、できるだけ早くスタックを AWS Systems Manager に移行することをおすすめします。詳細については、「AWS OpsWorks Stacks サポート終了に関する FAQ」および「AWS Systems Manager アプリケーションマネージャへの AWS OpsWorks Stacks アプリケーションの移行」を参照してください。

このウォークスルーでは、シンプルな Node.js アプリケーションサーバースタックのセットアップの基本について説明しました。ここでは、次のステップに関する推奨事項をいくつか示します。

Node.js の組み込みクックブックを調べる

インスタンスがどのように設定されているか詳細に調べるには、レイヤーの組み込みクックブック opsworks_nodejs を参照してください。これには、ソフトウェアをインストールして設定するために AWS OpsWorks スタックによって使用されるレシピおよび関連ファイルが含まれています。また、deploy クックブックには、アプリをデプロイするために AWS OpsWorks スタックによって使用されるレシピが含まれています。

サーバー設定をカスタマイズする

例では、基本的なスタックを使用しています。本稼働用に使用する場合は、スタックをカスタマイズすることをお勧めします。詳細については、「AWS OpsWorks スタックのカスタマイズ」を参照してください。

SSL サポートを追加する

アプリケーションを作成するときに、アプリケーションの SSL サポートを有効にし、適切な証明書を AWS OpsWorks スタックに提供できます。AWS OpsWorksスタックによって、その証明書が適切なディレクトリにインストールされます。詳細については、「SSL の使用」を参照してください。

メモリ内データのキャッシュを追加する

本稼働レベルのサイトでは、多くの場合、Redis や Memcache などのメモリ内キー値ストアにデータをキャッシュすることでパフォーマンスが向上します。AWS OpsWorks スタックのスタックではどちらも使用できます。詳細については、「ElastiCache Redis」および「Memcached」を参照してください。

高度なデプロイ方法を使用する

ここに示した例では、すべてのインスタンスに更新を同時にデプロイするというシンプルな方法でアプリをデプロイしました。このアプローチは、シンプルで高速ですが、エラーに対する許容範囲がありません。デプロイが失敗した場合や、更新に問題がある場合、本稼働スタックのすべてのインスタンスが影響を受けることがあります。問題が解決されるまで、サイトのサービスが中断されるか無効になる可能性があります。デプロイ方法の詳細については、「アプリケーションとクックブックの管理とデプロイ」を参照してください。

Node.js アプリケーションサーバーレイヤーを拡張する

レイヤーは、さまざまな方法で拡張できます。たとえば、インスタンスに対してスクリプトを実行するためのレシピや、アプリのデプロイをカスタマイズするための Chef デプロイフックを実装することができます。詳細については、「レイヤーの拡張」を参照してください。

環境変数を定義する

関連付けられたアプリケーションの環境変数を定義することによって、アプリケーションにデータを渡すことができます。アプリケーションをデプロイすると、AWS OpsWorks スタックによってこれらの変数がエクスポートされ、アプリケーションからのアクセスが可能になります。詳細については、「 環境変数の使用」を参照してください。