AWS Elastic Beanstalk
開発者ガイド

AWS Elastic Beanstalk への Sinatra アプリケーションのデプロイ

このチュートリアルでは、シンプルな Sinatra ウェブアプリケーションを AWS Elastic Beanstalk にデプロイする方法について説明します。

前提条件

このチュートリアルでは、Elastic Beanstalk の基本的なオペレーションと Elastic Beanstalk コンソール についてある程度の知識があることを前提としています。Elastic Beanstalk 環境をまだ起動していない場合は、「Elastic Beanstalk の使用開始」の指示に従ってまず起動してください。

このガイドの手順に従うには、コマンドを実行するためのコマンドラインターミナルまたはシェルが必要になります。コマンドは、該当する場合、プロンプト記号 ($) と現在のディレクトリの名前が前に付けられて、リストに示されます。

~/eb-project$ this is a command this is output

Linux および macOS では、任意のシェルとパッケージマネージャーを使用します。Windows 10 では、Linux 用の Windows サブシステムをインストールして、Windows 統合バージョンの Ubuntu および Bash を入手できます。

Sinatra には Ruby 1.9 以降が必要です。このチュートリアルでは、Ruby 2.5.1 とそれに対応する Elastic Beanstalk プラットフォーム設定を使用します。「Ruby 開発環境をセットアップする」の手順に従って Ruby をインストールします。

Elastic Beanstalk 環境を起動する

AWS マネジメントコンソール を使用して、Elastic Beanstalk 環境を作成します。[Ruby] プラットフォームを選択し、デフォルト設定およびサンプルコードを受け入れます。

環境を起動するには(コンソール)

  1. 次の事前に設定されたリンクを使用して、Elastic Beanstalk コンソール を開きます: console.aws.amazon.com/elasticbeanstalk/home#/newApplication?applicationName=tutorials&environmentType=LoadBalanced&instanceType=t2.micro

  2. [Platform] に、アプリケーションで使用される言語に一致するプラットフォームを選択します。

  3. [Application code] に、[Sample application] を選択します。

  4. [Review and launch] を選択します。

  5. 使用できるオプションを確認します。その内容でよければ、[Create app] を選択します。

環境の作成の所要時間は約 5 分です。以下のリソースが作成されます。

  • 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 という形式になります。

これらのリソースはすべて、Elastic Beanstalk により管理されます。 環境を終了すると、Elastic Beanstalk は含まれているすべてのリソースを終了します。

注記

Elastic Beanstalk が作成する Amazon S3 バケットは、環境間で共有され、環境の終了時に削除されません。詳細については、「Amazon S3 で Elastic Beanstalk を使用する」を参照してください。

基本的な Sinatra ウェブサイトの作成

Sinatra アプリケーションを作成してデプロイするには

  1. 次の内容で、config.ru という名前の設定ファイルを作成します。

    例 config.ru

    require './helloworld' run Sinatra::Application
  2. 次の内容で、helloworld.rb という名前の Ruby コードファイルを作成します。

    例 helloworld.rb

    require 'sinatra' get '/' do "Hello World!" end
  3. 次の内容で、Gemfile を作成します。

    例 Gemfile

    source 'https://rubygems.org' gem 'sinatra'

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

ソースファイルを含むソースバンドルを作成します。次のコマンドでは、sinatra-default.zip というソースバンドルが作成されます。

~/eb-sinatra$ zip ../sinatra-default.zip -r * .[^.]*

ソースバンドルを Elastic Beanstalk にアップロードして Sinatra を環境にデプロイします。

ソースバンドルをデプロイするには

  1. Elastic Beanstalk コンソール を開きます。

  2. お客様の環境の管理ページに移動します。

  3. [Upload and Deploy] を選択します。

  4. [Choose File] を選択し、ダイアログボックスを使用してソースバンドルを選択します。

  5. [Deploy] を選択します。

  6. デプロイが完了したら、新しいタブのウェブサイトを開く、サイトの URL を選択します。

クリーンアップ

Elastic Beanstalk の操作を終了したら、 環境を終了できます。Elastic Beanstalk は、Amazon EC2 インスタンスデータベースインスタンスロードバランサー、セキュリティグループ、アラームなど、お客様の環境に関連付けられているすべての AWS リソースを終了します。

Elastic Beanstalk 環境を終了するには

  1. Elastic Beanstalk コンソール を開きます。

  2. お客様の環境の管理ページに移動します。

  3. [Actions] を選択してから、[Terminate Environment] を選択します。

  4. [Confirm Termination] ダイアログボックスに環境名を入力し、[Terminate] を選択します。

Elastic Beanstalk を使用すると、いつでもアプリケーション用の新しい環境を簡単に作成できます。

次のステップ

Sinatra の詳細については、sinatrarb.com を参照してください。

アプリケーションの開発が進むに従って、多くの場合、手動で .zip ファイルを作成して Elastic Beanstalk コンソール コンソールにアップロードすることなく、環境を管理してアプリケーションをデプロイする方法が必要になります。Elastic Beanstalk コマンドラインインターフェイス (EB CLI) には、コマンドラインからアプリケーションを作成、設定して、Elastic Beanstalk 環境にデプロイするための使いやすいコマンドが用意されています。

最後に、本稼働環境でアプリケーションを使用する予定の場合は、お客様の環境にカスタムドメイン名を設定し、セキュアな接続のために HTTPS を有効にすることが必要になります。