1. AWS Elastic Beanstalk

1.1. Elastic Beanstalk とは

Amazon Web Services (AWS) の Elastic Beanstalk (Beanstalk)は、他の AWS サービスを Beanstalk を通して管理していくような仕組みです。AWS のサイトに特徴が簡単に説明してありましたので、引用します。

サービス概要 [1]

  • 開始が容易

    Elastic Beanstalk を利用すると、アプリケーションをすばやく簡単に AWS にデプロイすることができます。 AWS Management Console、Git デプロイメント、または Eclipse や Visual Studio などの 統合開発環境(IDE)を使用してアプリケーションをアップロードするだけで、 Elastic Beanstalk によって自動的にデプロイメントの詳細 (容量のプロビジョニング、負荷分散、Auto Scaling、アプリケーション状態モニタリングなど)が処理されます。 インフラストラクチャやリソースの設定をすることなく、数分内にアプリケーションが使用できるようになります。

  • 不足を感じることはありません

    Elastic Beanstalk は、デフォルトの Auto Scaling 設定に基づき、 自動的にアプリケーションの拡大/縮小を行います。 特定のアプリケーションのニーズに基づいて、簡単に Auto Scaling の設定を調整することができます。 例えば、Auto Scaling のアクションをトリガするために CPU を利用することができます。 Elastic Beanstalk により、コストを最小限に抑えながら、アプリケーションはワークロードやトラフィックの ピークを処理することができます。

  • 完全なコントロール

    Elastic Beanstalk ではドアが全開されていて、お客様のアプリケーションを稼動している AWS リソースの完全なコントロールを維持できます。インフラストラクチャ要素のいくつか(またはすべて)を 引き受けたい場合は、Elastic Beanstalk の管理機能を使ってシームレスにそれを行うことができます。 例えば、Elastic Beanstalk コンソールを介して、ログファイルを見る、アプリケーションの状態を監視する、 Auto Scaling ルールを設定する、Eメール通知を設定する、さらに環境変数をパスすることができます。

  • 柔軟性

    CPU とメモリの要件に応じて、アプリケーションに最適な Amazon EC2 インスタンスのタイプを、 いくつかの利用可能なデータベースのオプションから選択することができます。 例えば、ウェブアプリケーションに容量の大きいメモリフットプリントがある場合は、 ハイメモリインスタンスで構成されるデプロイを指定することができます。

  • 高い信頼性

    Elastic Beanstalk は、Amazon の実績のあるネットワークインフラストラクチャとデータセンター内で実行され、 開発者が高い耐久性と可用性を必要とするアプリケーションを実行することができる環境を提供します。

[1]AWS Elastic Beanstalk サイトより

1.2. デプロイ手順

Warning

この説明は、とりあえず web2py アプリケーションを Beanstalk で動かすことを目的としています。 実際のアプリケーションでは、各種設定やチューニングが必要となるかもしれませんが、 それらの説明はしません。

AWS に対するデプロイは、幾つかの方法があります。今回次の2つのツールを使用し、デプロイを行います。

  • AWS Management Console
    AWS マネジメントコンソール は、 AWS の開発運用で使用する最も一般的なツールです。
  • eb ツール
    Beanstalk の管理を行うコマンドラインツールです。Git と一緒に使用します。

これらのツールを使ったデプロイ手順は、以下、ステップ毎に詳細を説明します。