メニュー
AWS Elastic Beanstalk
開発者ガイド (API Version 2010-12-01)

Express アプリケーションを Elastic Beanstalk にデプロイする

このセクションでは、EB CLI と git を使用して Elastic Beanstalk にサンプルアプリケーションをデプロイした後、Express フレームワークを使用するようにアプリケーションを更新する手順を説明します。

Express デプロイ環境をセットアップする

Express を設定し、プロジェクト構造を作成します。次に、Linux オペレーティングシステムで Express を設定する手順を示します。

ローカルコンピュータで Express 開発環境を設定するには

  1. Node.js をインストールします。手順については、http://nodejs.org/ を参照してください。次のステップに進む前に、インストールが成功したことを確認してください。

    $ node -v

    注記

    現在サポートされている Node.js のバージョンについては、「Elastic Beanstalk でサポートされているプラットフォーム」を参照してください。

  2. Express アプリケーション用のディレクトリを作成します。

    ~$ mkdir node-express
    ~$ cd node-express
  3. npm をインストールします(まだインストールしていない場合)。次に、npm のインストール方法の一例を示します。

    ~/node-express$ yum install npm
  4. express コマンドにアクセスできるよう、Express をグローバルにインストールします。

    ~/node-express$ npm install -g express-generator
  5. オペレーティングシステムによっては、express コマンドを実行するパスを設定する必要があります。パスを設定する必要がある場合、Express インストール時の以前のステップの出力を使用します。次に例を示します。

    ~/node-express$ export:PATH=$PATH:/usr/local/share/npm/bin/express
  6. express コマンドを実行します。これにより、package.json が生成されます。

    ~/node-express$ express

    継続するかどうか確認されたら、y を入力します。

  7. ローカルの依存関係を設定します。

    ~/node-express$ npm install
  8. 正しく動作することを確認します。

    ~/node-express$ npm start

    次のような出力が表示されます。

    > nodejs@0.0.0 start /home/local/user/node-express
    > node ./bin/www

    サーバーを停止するには、Ctrl+c を押します。

  9. Git リポジトリを初期化します。 Git がインストールされていない場合は、Git ダウンロードサイトからダウンロードします。

    ~/node-express$ git init
  10. .gitignore という名前のファイルを作成し、次のファイルとディレクトリを追加します。これらのファイルはリポジトリへの追加から除外されます。このステップは必須ではありませんが、行うことをお勧めします。

    node-express/.gitignore

    node_modules/
    .gitignore
    .elasticbeanstalk/

Elastic Beanstalk 環境の作成

アプリケーションの EB CLI リポジトリを設定し、Node.js プラットフォームを実行する Elastic Beanstalk 環境を作成します。

  1. eb init コマンドを使用してリポジトリを作成します。

    ~/node-express$ eb init --platform node.js --region us-west-2
    Application node-express has been created.

    このコマンドは、.elasticbeanstalk という名前のフォルダに、アプリケーションの環境作成用の設定ファイルを作成し、現在のフォルダに基づいた名前で Elastic Beanstalk アプリケーションを作成します。

  2. eb create コマンドを使用して、サンプルアプリケーションを実行する環境を作成します。

    ~/node-express$ eb create --sample node-express-env

    このコマンドは、Node.js プラットフォームと以下のリソース用にデフォルト設定で負荷分散環境を作成します。

    • EC2 インスタンス – 選択したプラットフォームでウェブアプリケーションを実行するように設定された Amazon Elastic Compute Cloud (Amazon EC2) 仮想マシン。

      各プラットフォームは、それぞれ特定の言語バージョン、フレームワーク、ウェブコンテナ、またはそれらの組み合わせをサポートするための、さまざまなソフトウェア、設定ファイル、スクリプトを実行します。ほとんどのプラットフォームでは、Apache または nginx のいずれかをウェブアプリケーションの前にリバースプロキシとして配置します。そのプロキシがリクエストをアプリケーションに転送し、静的アセットを提供し、アクセスログとエラーログを生成します。

    • インスタンスセキュリティグループ – ポート 80 上の進入を許可するように設定された Amazon EC2 セキュリティグループ。 このリソースでは、ロードバランサーからの HTTP トラフィックが、ウェブアプリケーションを実行している EC2 インスタンスに達することができます。 デフォルトでは、トラフィックは他のポート上で許可されません。

    • ロードバランサー – アプリケーションを実行するインスタンスにリクエストを分散するように設定された Elastic Load Balancing ロードバランサー。 ロードバランサーにより、インスタンスを直接インターネットに公開する必要もなくなります。

    • ロードバランサー セキュリティグループ – ポート 80 上の進入を許可するように設定された Amazon EC2 セキュリティグループ。 このリソースでは、インターネットからの HTTP トラフィックが、ロードバランサーに達することができます。 デフォルトでは、トラフィックは他のポート上で許可されません。

    • Auto Scaling グループ – インスタンスが終了されたか利用不可になった場合にそのインスタンスを置き換えるように設定された Auto Scaling グループ。

    • Amazon S3 バケット – Elastic Beanstalk の使用時に作成されるソースコード、ログ、その他のアーティファクトの保存場所。

    • Amazon CloudWatch アラーム – お客様の環境内のインスタンスの負荷をモニタリングする 2 つの CloudWatch アラーム。負荷が高すぎたり低すぎたりする場合にトリガーされます。アラームがトリガーされると、Auto Scaling グループはレスポンスとしてスケールアップまたはダウンを行います。

    • AWS CloudFormation スタック – 環境内でリソースを起動して、設定の変更を伝達するために、Elastic Beanstalk は AWS CloudFormation を使用します。 リソースは、AWS CloudFormation コンソールに表示できるテンプレートで定義されます。

    • ドメイン名 – ウェブアプリケーションまでのルートとなるドメイン名であり、subdomain.region.elasticbeanstalk.com という形式になります。

  3. 環境の作成が完了したら、eb open コマンドを使用して、デフォルトのブラウザーでその環境の URL を開きます。

    ~/node-express$ eb open

アプリケーションの更新

サンプルアプリケーションの環境を作成したら、その環境を使用するようにアプリケーションを更新できます。このステップでは、Express フレームワークを使用するようサンプルアプリケーションを更新します。

Express を使用するようアプリケーションを更新するには

  1. ノードコマンドを "npm start" に設定する設定ファイルを追加します。

    node-express/.ebextensions/nodecommand.config

    option_settings:
      aws:elasticbeanstalk:container:nodejs:
        NodeCommand: "npm start"

    詳細については、「設定ファイル (.ebextensions) による高度な環境のカスタマイズ」を参照してください。

  2. ファイルをステージします。

    ~/node-express$ git add .
    ~/node-express$ git commit -m "First express app"
  3. 変更をデプロイします。

    ~/node-express$ eb deploy
  4. 環境が緑色で示されていて準備完了したら、URL を再表示して正しく動作することを確認します。ウェブページに "Welcome to Express" が表示されます。

次に、静的ファイルを処理し、新しいページを追加するように Express アプリケーションを更新します。

静的ファイルを設定し、新しいページを Express アプリケーションに追加します。

  1. 以下の内容の 2 番目の設定ファイルを追加します。

    node-express/.ebextensions/staticfiles.config

    option_settings:
      aws:elasticbeanstalk:container:nodejs:staticfiles:
        /public: /public
  2. node-express/app.js で静的マッピングをコメントアウトします。このステップは必須ではありませんが、静的マッピングが正しく設定されていることを確認するのに適したテストです。

    //  app.use(express.static(path.join(__dirname, 'public'))); 
  3. 更新したファイルをローカルリポジトリに追加し、変更をコミットします。

    ~/node-express$ git add .ebextensions/ app.js
    ~/node-express$ git commit -m "Serve stylesheets statically with nginx."
  4. 追加 node-express/routes/hike.js. 次の内容を入力します。

    exports.index = function(req, res) {
     res.render('hike', {title: 'My Hiking Log'});
    };
    
    exports.add_hike = function(req, res) {
    };
  5. node-express/app.js を更新して新しく 3 つの行を含めます。

    まず、次の行を追加して、このルートに require を追加します。

    hike = require('./routes/hike');

    ファイルは次のスニペットのようになります。

    var express = require('express');
    var path = require('path');
    var hike = require('./routes/hike');

    その後、次の 2 つの行を node-express/app.jsvar app = express(); の後に追加します。

    app.get('/hikes', hike.index);
    app.post('/add_hike', hike.add_hike);

    ファイルは次のスニペットのようになります。

    var app = express();
    app.get('/hikes', hike.index);
    app.post('/add_hike', hike.add_hike);
  6. node-express/views/index.jadenode-express/views/hike.jade にコピーします。

    ~/node-express$ cp views/index.jade views/hike.jade
  7. ファイルをローカルリポジトリに追加し、変更をコミットし、更新したアプリケーションをデプロイします。

    ~/node-express$ git add .
    ~/node-express$ git commit -m "Add hikes route and template."
    ~/node-express$ eb deploy
  8. 数分後、環境が更新されます。環境が緑色で示されていて準備が完了したら、ブラウザーを再表示し、URL の最後に hikes を追加して(http://node-express-env-syypntcz2q.elasticbeanstalk.com/hikes など)、正しく動作することを確認します。

    タイトルが My Hiking Log のウェブページが表示されます。

クリーンアップ

Elastic Beanstalk での作業が完了したら、 環境を終了できます。

  • eb terminate コマンドを使用して、お客様の環境とその環境に含まれるすべてのリソースを終了します。

    ~/node-express$ eb terminate
    The environment "node-express-env" and all associated instances will be terminated.
    To confirm, type the environment name: node-express-env
    INFO: terminateEnvironment is starting.
    ...