

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

# Node.js スタックの初回作成
<a name="gettingstarted-node"></a>

**重要**  
この AWS OpsWorks Stacks サービスは 2024 年 5 月 26 日にサポート終了となり、新規および既存のお客様の両方で無効になっています。できるだけ早くワークロードを他のソリューションに移行することを強くお勧めします。移行についてご質問がある場合は、[AWS re:Post](https://repost.aws/) または[AWS プレミアムサポート](https://aws.amazon.com/support)を通じて AWS サポート チームにお問い合わせください。

この例では、Node.js アプリケーションサーバーをサポートする Linux スタックの作成方法と、シンプルなアプリケーションのデプロイ方法について説明します。スタックは以下のコンポーネントから構成されます。
+ 2 つのインスタンスを伴う [[Node.js App Server Layer]](workinglayers-node.md) (Node.js アプリケーションサーバーレイヤー)
+ アプリケーションサーバーインスタンスにトラフィックを分散させる [Elastic Load Balancing](layers-elb.md) (Elastic ロードバランシング)
+ バックエンドデータベースが提供する [Amazon Relational Database Service (Amazon RDS) service layer](#gettingstarted-node-next) (Amazon Relational データベースサービス (Amazon RDS) サービスレイヤー)

**Topics**
+ [前提条件](#gettingstarted-node-start)
+ [アプリケーションの実装](#gettingstarted-node-app)
+ [データベースサーバーとロードバランサーの作成](#gettingstarted-node-create-db)
+ [スタックの作成](#gettingstarted-node-stack)
+ [アプリケーションのデプロイ](#gettingstarted-node-deploy)
+ [次のステップ](#gettingstarted-node-next)

## 前提条件
<a name="gettingstarted-node-start"></a>

このウォークスルーでは、以下のことを前提としています。
+ AWS アカウントがあり、 OpsWorks スタックの使用方法の基本を理解している。

   OpsWorks スタックまたは AWS を初めて使用する場合は、「」の入門チュートリアルを完了して基本を学習してください[Chef 11 Linux スタックの使用開始](gettingstarted.md)。
+ Node.js アプリケーションの基本的な実装方法を理解している。

  Node.js に慣れていない場合は、「[Node: Up and Running](http://chimera.labs.oreilly.com/books/1234000001808/index.html)」などの入門チュートリアルを完了して、基本事項を学習してください。
+ この例で使用する予定の AWS リージョンで 1 つ以上のスタックを作成済みである。

  リージョンに最初のスタックを作成すると、 OpsWorks Stacks はレイヤータイプごとに Amazon Elastic Compute Cloud (Amazon EC2) セキュリティグループを作成します。Amazon RDS データベース (DB) インスタンスを作成するには、これらのセキュリティグループが必要です。 OpsWorks スタックを初めて使用する場合は、「」のチュートリアルに従ったときと同じリージョンをこの例に使用することをお勧めします[Chef 11 Linux スタックの使用開始](gettingstarted.md)。新しいリージョンを使用する場合は、リージョンに新しいスタックを作成します。このスタックにレイヤーやインスタンスは必要ありません。スタックを作成するとすぐに、 OpsWorks スタックはリージョンに一連のセキュリティグループを自動的に追加します。
+ [デフォルトの VPC](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ec2-supported-platforms.html) にスタックを作成する。

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

  セキュリティ上の理由から、ウォークスルー用にアカウントのルート認証情報を指定しないことを強くお勧めします。代わりに、 OpsWorks スタックのフルアクセス許可を持つユーザーを作成し、それらの認証情報を OpsWorks スタックで使用します。詳細については、「[ 管理者ユーザーの作成](opsworks-security-users-manage-admin.md)」を参照してください。

## アプリケーションの実装
<a name="gettingstarted-node-app"></a>

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

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

**Topics**
+ [パッケージディスクリプター](#w2ab1c14c71b9c11c13b8)
+ [レイアウトファイル](#w2ab1c14c71b9c11c13c10)
+ [コードファイル](#w2ab1c14c71b9c11c13c12)

### パッケージディスクリプター
<a name="w2ab1c14c71b9c11c13b8"></a>

アプリケーションのパッケージディスクリプターを作成するには、以下に示す内容の `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](http://expressjs.com/) パッケージを参照しています。
+ `ejs` は、テキストを HTML レイアウトファイルに挿入するためにアプリケーションで使用される [EJS](http://www.embeddedjs.com/) パッケージを参照しています。
+ `mysql` は、RDS インスタンスに接続するためにアプリケーションで使用される [node-mysql](https://github.com/felixge/node-mysql) パッケージを参照しています。

パッケージディスクリプターファイルの詳細については、「[package.json](https://docs.npmjs.com/cli/v9/configuring-npm/package-json)」を参照してください。

### レイアウトファイル
<a name="w2ab1c14c71b9c11c13c10"></a>

アプリケーションのレイアウトファイルを作成するには、`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 ドキュメントです。各 `<%= ... =>` 要素は、次に作成するコードファイル内で定義されている変数の値を示します。

### コードファイル
<a name="w2ab1c14c71b9c11c13c12"></a>

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

**重要**  
 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` ステートメントでは、データベース接続データを含めています。後述するように、データベースインスタンスをアプリケーションにアタッチすると、 OpsWorks Stacks は接続データを という名前のファイルに配置し`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` にあります。ただし、 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 リクエストのどちらをサポートしているかを指定します。 OpsWorks スタックは`PORT`環境変数を 80 (HTTP) または 443 (HTTPS) に設定し、その変数をアプリケーションで使用できます。  
他のポートでリッスンすることは可能ですが、Node.js App Server レイヤーの組み込みセキュリティグループである **[AWS-OpsWorks-nodejs-App-Server]** では、ポート 80、443、および 22 (SSH) への着信ユーザートラフィックのみが許可されています。他のポートへの着信ユーザートラフィックを許可するには、適切なインバウンドルールを使用して[セキュリティグループを作成](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/using-network-security.html)し、[Node.js アプリケーション-サーバーレイヤーに割り当てます](workinglayers-basics-edit.md#workinglayers-basics-edit-security)。組み込みのセキュリティグループを編集することでインバウンドルールを変更しないでください。スタックを作成するたびに、 OpsWorks スタックは組み込みセキュリティグループを標準設定で上書きするため、行った変更は失われます。

**注記**  
関連するアプリケーションを[作成](workingapps-creating.md#workingapps-creating-environment)または[更新](workingapps-editing.md)するときに、カスタムの環境変数をアプリケーションに関連付けることができます。また、カスタムの JSON とカスタムレシピを使用してデータをアプリケーションに渡すこともできます。詳細については、「[アプリケーションへのデータの引き渡し](apps-data.md)」を参照してください。

## データベースサーバーとロードバランサーの作成
<a name="gettingstarted-node-create-db"></a>

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

この例で十分使用できる、最小設定の RDS DB インスタンスを作成する方法を次に説明します。詳細については、「[Amazon RDS ユーザーガイド](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Welcome.html)」を参照してください。

**RDS DB インスタンスを作成するには**

1. 

**コンソール を開きます。**

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

1. 

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

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

1. 

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

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

1. 

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

   [**DB Instance Details**] ページで、次の設定を指定します。
   + **DB Instance Class**: **db.t2.micro**
   + **Multi-AZ Deployment**: **No**
   + **ストレージ割り当て**: **5** GB
   + **DB インスタンス識別子**: **nodeexample**
   + **マスターユーザーの名前**: **opsworksuser**
   + [**Master Password**]: 任意のパスワード

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

1. 

**詳細設定を指定します。**

   [**Configure Advanced Settings**] ページで、以下の設定を指定します。
   + **データベース名**: **nodeexampledb**
   + **DB Security Group(s)**: **AWS-OpsWorks-DB-Master-Server**
**注記**  
**AWS-OpsWorks-DB-Master-Server** セキュリティグループでは、スタックのインスタンスからのみデータベースへのアクセスが許可されます。データベースに直接アクセスするには、適切なインバウンドルールを指定して追加のセキュリティグループを RDS DB インスタンスにアタッチします。詳細については、「[Amazon RDS セキュリティグループ](https://docs.aws.amazon.com/AmazonRDS/latest/UserGuide/Overview.RDSSecurityGroups.html)」を参照してください。VPC にインスタンスを配置することによってアクセスを制御することもできます。詳細については、「[VPC でのスタックの実行](workingstacks-vpc.md)」を参照してください。

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

以下の手順では、この例の Elastic Load Balancing ロードバランサーを作成する方法を説明します。詳細については、「[Elastic Load Balancing ユーザーガイド](https://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/elastic-load-balancing.html)」を参照してください。

**ロードバランサーを作成する方法**

1. 

**Amazon EC2 コンソールを開きます。**

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

1. 

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

   [**Define Load Balancer**] ページで、以下の設定を指定します。
   + **名前** – **Node-LB**
   + **Create LB Inside** (内部にLBを作成) – **My Default VPC** (マイデフォルトのVPC)

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

1. 

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

   [**Assign Security Groups**] ページで、以下のグループを指定します。
   + ** デフォルト VPC セキュリティグループ **
   + **AWS-OpsWorks-nodejs-App-Server**

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

1. 

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

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

1. 

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

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

## スタックの作成
<a name="gettingstarted-node-stack"></a>

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

**スタックを作成するには**

1. 

**OpsWorks スタックコンソールにサインインします。**

   [OpsWorks スタックコンソール](https://console.aws.amazon.com/opsworks/)にサインインし、[**Add Stack (スタックを追加)**] を選択します。

1. 

**スタックを作成します。**

   新しいスタックを作成するには、[**Chef 11 stack**] を選択して、以下の設定を指定します。
   +  – **NodeStack**
   + **[リージョン]** – **米国西部 (オレゴン)**

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

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

1. 

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

   [**NodeStack**] ページで [**Add a layer**] を追加し、次の設定を指定します。
   + **Layer type** (レイヤータイプ) – **Node.js App Server** (Node.js アプリケーションサーバー)
   + **Elastic Load Balancer** (Elastic ロードバランサー) – **Node-LB** (ノード-LB)

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

1. 

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

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

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

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

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

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

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

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

   Elastic Load Balancing ロードバランサーをこのレイヤーに割り当てました。インスタンスがオンライン状態に出入りすると、 OpsWorks Stacks はロードバランサーにインスタンスを自動的に登録または登録解除します。
**注記**  
本稼働スタックでは、アプリケーションサーバーインスタンスを複数の AZ に分散することをお勧めします。分散しておくと、ユーザーが 1 つの AZ に接続できない場合、着信トラフィックがロードバランサーによって別のゾーンにルーティングされるため、サイトの機能が続行します。

1. 

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

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

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

   1. **nodeexampledb** インスタンスを選択し、以下の設定を指定します。
      + **User** (ユーザー) – インスタンスの作成時に指定したマスターユーザー名 (この例では、)**opsworksuser**。
      + **[Password]** (パスワード) – インスタンスの作成時に指定したマスターパスワード。

   1. **[Register with Stack]** (スタックに登録) を選択し、RDS DB インスタンスを [[Amazon RDS service layer]](workinglayers-db-rds.md) (Amazon RDS サービスレイヤー) としてスタックに追加します。
**警告**  
OpsWorks スタックは**ユーザー**または**パスワード**の値を検証せず、アプリケーションに渡します。これらを誤って入力すると、アプリケーションがデータベースに接続できません。

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

## アプリケーションのデプロイ
<a name="gettingstarted-node-deploy"></a>

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

**アプリケーションをデプロイするには**

1. 

**アプリケーションをアーカイブファイルにパッケージ化します。**

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

1. 

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

   `nodedb.zip` を Amazon S3 バケットにアップロードし、ファイルをパブリックにして、後で使用できるようにファイルの URL をコピーします。バケットの作成方法とファイルのアップロード方法の詳細については、「[Amazon Simple Storage Service の使用開始](https://docs.aws.amazon.com/AmazonS3/latest/gsg/GetStartedWithS3.html)」を参照してください。
**注記**  
OpsWorks スタックは Amazon S3 バケットからプライベートファイルをデプロイすることもできますが、わかりやすくするために、この例ではパブリックファイルを使用します。詳細については、「[Application Source](workingapps-creating.md#workingapps-creating-source)」を参照してください。

1. 

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

    OpsWorks スタックコンソールに戻り、ナビゲーションペインで**アプリ**を選択し、**アプリの追加**を選択します。以下の設定を指定します。
   + **[Name]** (名前) – `NodeDB`。

     この文字列は、アプリケーションの表示名です。ほとんどの場合、アプリケーションの短縮名が必要です。これは、すべての文字を小文字に変換し、句読点を削除することで 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**] をクリックしてアプリケーションを作成します。

1. 

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

   [**Apps**] ページに移動し、NodeDB アプリケーションの [**Actions**] 列で、[**deploy**] を選択します。次に、**Deploy** を選択してアプリケーションをサーバーインスタンスにデプロイします。 OpsWorks スタックは各インスタンスで Deploy レシピを実行し、リポジトリからアプリケーションをダウンロードしてサーバーを再起動します。各インスタンスに緑色のチェックマークが付き、[**Status**] が [**successful**] であれば、デプロイが完了しており、アプリケーションでリクエストの処理を開始できる状態になっています。
**注記**  
デプロイが失敗した場合は、**[Log]** (ログ) 列で **[show]** (表示) を選択すると、デプロイメントの Chef ログが表示されます。エラー情報は下の方にあります。

1. 

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

   アプリケーションを開くには、[**Layers**] (レイヤー) を選択し、ロードバランサーを選択して、ロードバランサーの DNS 名を選択します。これにより、HTTP リクエストがロードバランサーに送信されます。次のような内容が表示されます。  
![\[AWS OpsWorks Node.js example showing RDS endpoint, user credentials, and database details.\]](http://docs.aws.amazon.com/ja_jp/opsworks/latest/userguide/images/node_walkthrough.png)

**注記**  
OpsWorks スタックは、セットアップ中に新しいインスタンスにアプリケーションを自動的にデプロイします。オンラインインスタンスに対してのみ、手動のデプロイが必要になります。詳細については、「[アプリケーションのデプロイ](workingapps-deploying.md)」を参照してください。高度なデプロイ方法など、デプロイ全般については、「[アプリケーションとクックブックの管理とデプロイ](best-deploy.md)」を参照してください。

## 次のステップ
<a name="gettingstarted-node-next"></a>

**重要**  
この AWS OpsWorks Stacks サービスは 2024 年 5 月 26 日にサポート終了となり、新規および既存のお客様の両方で無効になっています。できるだけ早くワークロードを他のソリューションに移行することを強くお勧めします。移行についてご質問がある場合は、[AWS re:Post](https://repost.aws/) または[AWS プレミアムサポート](https://aws.amazon.com/support)を通じて AWS サポート チームにお問い合わせください。

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

**Node.js の組み込みクックブックを調べる**  
インスタンスの設定方法について詳しく知りたい場合は、レイヤーの組み込みクックブック[「opsworks\$1nodejs](https://github.com/aws/opsworks-cookbooks/tree/release-chef-11.10/opsworks_nodejs)」を参照してください。これには、 OpsWorks スタックがソフトウェアのインストールと設定に使用するレシピと関連ファイル、および OpsWorks スタックがアプリケーションのデプロイに使用するレシピを含む組み込み[デプロイクックブック](https://github.com/aws/opsworks-cookbooks/tree/release-chef-11.10/deploy)が含まれています。

**サーバー設定をカスタマイズする**  
例では、基本的なスタックを使用しています。本稼働用に使用する場合は、スタックをカスタマイズすることをお勧めします。詳細については、「[OpsWorks スタックのカスタマイズ](customizing.md)」を参照してください。

**SSL サポートを追加する**  
アプリの作成時に、アプリの SSL サポートを有効にし、適切な証明書を OpsWorks スタックに提供できます。 OpsWorks スタックは、適切なディレクトリに証明書をインストールします。詳細については、「[SSL の使用](workingsecurity-ssl.md)」を参照してください。

**メモリ内データのキャッシュを追加する**  
本稼働レベルのサイトでは、多くの場合、Redis や Memcache などのメモリ内キー値ストアにデータをキャッシュすることでパフォーマンスが向上します。 OpsWorks スタックスタックでは、 のいずれかを使用できます。詳細については、「[ElastiCache Redis](other-services-redis.md)」および「[Memcached](workinglayers-mem.md)」を参照してください。

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

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

**環境変数を定義する**  
関連付けられたアプリケーションの環境変数を定義することによって、アプリケーションにデータを渡すことができます。アプリケーションをデプロイすると、 OpsWorks スタックはこれらの変数をエクスポートして、アプリケーションからアクセスできるようにします。詳細については、「[環境変数の使用](apps-environment-vars.md)」を参照してください。