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

外部 Amazon RDS データベースを備えた高可用性の Drupal ウェブサイトを Elastic Beanstalk にデプロイする

このチュートリアルは AWS Elastic Beanstalk の外部の RDS DB インスタンスを起動する プロセスおよび Drupal ウェブサイトを実行して、そこに接続する、高可用性環境を設定する手順を説明します。Elastic Beanstalk の外部 DB インスタンスを実行すると、環境のライフサイクルからデータベースを分離し、複数の環境から同じデータベースに接続でき、あるデータベースから別のデータベースへ交換したり、データベースに影響を与えないで Blue-Green Deployment を実行できます。

Amazon RDS に DB インスタンスを起動する

Elastic Beanstalk で実行するアプリケーションで外部データベースを使用するには、まず Amazon RDS で DB インスタンスを起動します。 Amazon RDS でインスタンスを起動する場合、Elastic Beanstalk および Elastic Beanstalk 環境から完全に独立しており、Elastic Beanstalk によって終了されたり、モニタリングされたりしません。

Amazon RDS コンソールを使用して、マルチ AZ MySQL DB インスタンスを起動します。 マルチ AZ 配置を選択すると、データベースがフェイルオーバーされ、マスター DB インスタンスがサービスを停止しても引き続き利用できます。

RDS DB インスタンスをデフォルト VPC 内で起動するには

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

  2. ナビゲーションペインで、[Instances] を選択します。

  3. [Launch DB Instance] を選択します。

  4. [DB エンジン] を選択し、設定をプリセットします。

  5. [Specify DB Details] で [DB Instance Class] を選択します。高可用性を実現するために、[Multi-AZ Deployment] を [Yes] に設定します。

  6. [Settings] で、[DB Instance Identifier]、[Master Username] および [Master Password] (と [Confirm Password]) を入力します。入力した値を後で使用できるように書き留めておいてください。

  7. [Next] を選択します。

  8. [Network and Security] 設定では、以下を選択します。

    • VPCDefault VPC

    • Subnet Groupdefault

    • Publicly AccessibleNo

    • Availability Zone No Preference

    • VPC Security GroupsDefault VPC Security Group

  9. [Database Name] に、ebdb を入力し、残りのオプションのデフォルトの設定を確認します。 次のオプションの値に注意してください。

    • Database Name

    • Database Port

  10. [Launch DB Instance] を選択します。

次に、DB インスタンスにアタッチするセキュリティグループを変更して、適切なポートへのインバウンドトラフィックを許可します。これは、後で Elastic Beanstalk 環境にアタッチするのと同じセキュリティグループで、追加するルールは、同じセキュリティグループ内の他のリソースにアクセス許可を付与するものです。

RDS インスタンスのセキュリティグループの進入ルールを変更する

  1. Amazon RDS コンソールを開きます。

  2. [Instances] を選択します。

  3. DB インスタンスのエントリの横にある矢印を選択して、ビューを展開します。

  4. [Details] タブを選択します。

  5. [Security and Network] セクションでは、DB インスタンスに関連付けられるセキュリティグループが表示されます。リンクを開いて、Amazon EC2 コンソールにセキュリティグループを表示します。

    注記

    [Details] タブを開いている間に、このページに表示されている [Endpoint] およびセキュリティグループ名を後で使用するために書き留めます。

    セキュリティグループ名は、[Security Groups] に表示されるリンクの最初の値 (かっこの前) です。2 番目の値 (かっこの中) は、セキュリティグループ ID です。

  6. セキュリティグループの詳細で、[Inbound] タブを選択します。

  7. [Edit] を選択します。

  8. [Add Rule] を選択します。

  9. [Type] で、アプリケーションが使用する DB エンジンを選択します。

  10. [Source] で、[Custom ] を選択し、続いてセキュリティグループのグループ ID を入力します。これにより、セキュリティグループのリソースが、同じグループ内の他のリソースからのトラフィックをデータベースポートで受信することを可能にします。

  11. [Save] を選択します。

DB インスタンスの作成には約 10 分かかります。 その間、Drupal をダウンロードし、Elastic Beanstalk 環境を起動します。

Drupal のダウンロード

AWS Elastic Beanstalk を使用して Drupal のデプロイを準備するには、Drupal ファイルをコンピュータにコピーして、いくつかの設定情報を提供する必要があります。AWS Elastic Beanstalk には ZIP または WAR ファイル形式のソースバンドルが必要です。

Drupal をダウンロードしてソースバンドルを作成するには

  1. https://www.drupal.org/download を開きます。

  2. 最新リリースをダウンロードしてください。

  3. ダウンロードからローカルコンピュータ上のフォルダに Drupal ファイルを展開し、名前を drupal-beanstalk に変更する必要があります。

  4. 次のリポジトリで設定ファイルをダウンロードします。

    https://github.com/awslabs/eb-php-drupal/releases/download/v1.0/eb-php-drupal-v1.zip
  5. 設定ファイルを drupal-beanstalk フォルダに展開します。

  6. drupal-beanstalk フォルダの構造が正しいことを確認してください。

    ├── .ebextensions
    ├── core
    │ ├── assets
    │ ├── config
    │ ├── includes
    │ ├── lib
    │ ├── misc
    │ ├── modules
    │ ├── profiles
    │ ├── scripts
    │ ├── tests
    │ └── themes
    ├── modules
    ├── profiles
    ├── sites
    │ └── default
    ├── themes
    ├── vendor
    │ ├── asm89
    │ ├── composer
    │ ├── doctrine
    │ ├── easyrdf
    │ ├── egulias
    │ ├── guzzlehttp
    │ ├── ircmaxwell
    │ ├── masterminds
    │ ├── paragonie
    │ ├── psr
    │ ├── stack
    │ ├── symfony
    │ ├── symfony-cmf
    │ ├── twig
    │ ├── wikimedia
    │ └── zendframework
  7. デフォルトの VPC とサブネットの ID、およびパブリック IP アドレスを使用して、.ebextensions フォルダ内の設定ファイルを変更します。

  8. .ebextensions/efs-create.config ファイルは、VPC 内の各アベイラビリティーゾーン/サブネットに EFS ファイルシステムとマウントポイントを作成します。Amazon VPC コンソールで、デフォルトの VPC とサブネット ID を特定します。

    --または--

    .ebextensions/dev.config ファイルは、環境へのアクセスを IP アドレスに制限して、Drupal のインストールプロセス中に IP アドレスを保護します。ファイルの先頭にあるプレースホルダー IP アドレスをパブリック IP アドレスに置き換えます。

  9. オペレーティングシステムに応じてファイル、および drupal-beanstalk フォルダ (親ディレクトリではない) から、次のいずれかの方法を使用して ZIP ファイルを作成します。

  10. Windows — Windows エクスプローラーで、ファイルとフォルダを選択し、右クリックして、[送る]、[圧縮 (zip 形式) フォルダー] の順に選択します。ファイルに drupal-x.y.z.zip という名前を付けます。x.y.z は Drupal のバージョンです。

    --または--

    Mac OS X および Linux — 次のコマンドを使用します。「x.y.z」は Drupal のバージョンです。

    zip -r ../drupal-x.y.z.zip .

Elastic Beanstalk 環境を起動する

AWS マネジメントコンソール を使用して、Elastic Beanstalk 環境を起動します。

  1. 次の事前設定されたリンクで、Elastic Beanstalk コンソールを開きます: console.aws.amazon.com/elasticbeanstalk/home#/newApplication?applicationName=drupal-beanstalk&environmentType=LoadBalanced

  2. [プラットフォーム] については、[PHP] を選択します。

  3. [アプリケーションコード] では、[コードのアップロード] を選択します。

  4. [アップロード] を選択し、Drupal ファイル用に作成した ZIP ファイルに移動します。

  5. [アップロード] を選択してアプリケーションコードを選択します。

  6. [Configure more options] を選択します。

  7. [設定のプリセット] については、[カスタム設定] を選択します。

  8. [プラットフォーム設定を変更] を選択して、ドロップダウンメニューから [PHP 5.6 を実行する 64bit Amazon Linux 2016.09 v2.3.1] を選択し、次に [保存] を選択します。

  9. すべてのオプションを確認し、これらのオプションが適正であれば、[アプリの作成] を選択します。

環境の作成には約 5 分かかります。

セキュリティグループおよび環境プロパティの設定

次に、実行中の環境に DB インスタンスのセキュリティグループを追加します。この手順によって、アタッチされる追加のセキュリティグループを使用して、Elastic Beanstalk が環境内のすべてのインスタンスの再プロビジョニングを行います。

環境にセキュリティグループを追加するには

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

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

  3. [Configuration] を選択します。

  4. [Instances] セクションで、設定アイコン (  を編集します。 ) を選択します。

  5. [EC2 security groups] で、自動生成されるセキュリティグループ名の後にコンマを入力し、続いて RDS DB インスタンスのセキュリティグループの名前を入力します。これは、先にセキュリティグループを設定したときに書き留めた名前です。

  6. [Apply] を選択します。

  7. 警告を読み取って、[Save] を選択します。

次に、環境プロパティを使用して環境に接続情報を渡します。サンプルアプリケーションは、環境内でデータベースをプロビジョニングする場合、Elastic Beanstalk 設定と一致するプロパティのデフォルトセットを使用します。

Amazon RDS DB インスタンスの環境プロパティを設定するには

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

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

  3. [Configuration] を選択します。

  4. [Software Configuration] セクションで、設定アイコン (  を編集します。 ) を選択します。

  5. [Environment Properties] セクションで、アプリケーションが読み取る変数を定義して、接続文字列を構成します。統合された RDS DB インスタンスがある環境との互換性を考慮して、次を使用します。

    • RDS_HOSTNAME – DB インスタンスのホスト名。

      Amazon RDS コンソールラベル – [Endpoint] はホスト名です。

    • RDS_PORT – DB インスタンスが接続を許可するポート。デフォルト値は DB エンジンによって異なります。

      Amazon RDS コンソールラベル – [ポート]

    • RDS_DB_NAME – データベース名、ebdb

      Amazon RDS コンソールラベル – [DB 名前]

    • RDS_USERNAME – お客様のデータベース用に設定したユーザー名。

      Amazon RDS コンソールラベル – [ユーザー名]

    • RDS_PASSWORD – お客様のデータベース用に設定したパスワード。

    プラス記号 (+) を選択して、プロパティを追加します。

  6. [Apply] を選択します。

Drupal のインストール

Drupal のインストールを完了するには

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

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

  3. 環境 URL を選択して、ブラウザでサイトを開きます。サイトがまだ設定されていないため、Drupal のインストールウィザードにリダイレクトされます。

  4. データベースの次の設定で標準インストールを実行します。

    • データベース名 – Amazon RDS コンソールに表示される [DB Name]。

    • データベースのユーザー名とパスワード – データベースの作成時に入力した [Master Username] と [Master Password] の値。

    • Advanced Options > Host – Amazon RDS コンソールに表示される DB インスタンスの [Endpoint]。

インストールには約 1 分かかります。

環境を更新する

このチュートリアルには、セキュリティグループを作成し、それを環境のロードバランサーに割り当てる設定ファイル (loadbalancer-sg.config) が含まれており、dev.config で設定した IP アドレスを使用して、ポート 80 経由でネットワークからの接続への HTTP アクセスを制限します。これにより、Drupal のインストールを完了して管理者アカウントを設定する前に、外部のサードパーティがサイトに潜在的に接続するのを防ぐことができます。ロードバランサー設定からこの制限を削除し、インターネットにサイトを開くには、次の手順を実行します。

制限を削除し、環境を更新するには

  1. ローカルコンピュータで、drupal-beanstalk フォルダから .ebextensions/loadbalancer-sg-config ファイルを削除します。

  2. オペレーティングシステムに応じてファイル、および drupal-beanstalk フォルダ (親ディレクトリではない) から、次のいずれかの方法を使用して ZIP ファイルを作成します。

  3. Windows — Windows エクスプローラーで、ファイルとフォルダを選択し、右クリックして、[送る]、[圧縮 (zip 形式) フォルダー] の順に選択します。次の形式を使用してファイルに名前を付けます。ここで、「x.y.z」は Drupal のバージョンです。

    drupal-x.y.z-v2.zip

    --または--

    Mac OS X および Linux — 次のコマンドを使用します。「x.y.z」は Drupal のバージョンです。

    zip -r ../drupal-x.y.z-v2.zip .
  4. Elastic Beanstalk コンソールを開きます。

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

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

  7. [ファイルを選択] を選択し、Drupal ファイル用に作成した ZIP ファイルに移動します。

  8. 更新されたこのバージョンと以前のバージョンを区別する Version label を入力します。

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

Autoscaling を設定する

最後に、より高いインスタンス数で、Auto Scaling 環境グループを設定します。 環境のウェブサーバーが、単一障害点となることを防ぎ、サイトをサービス停止状態にせずに変更をデプロイすることができるように、常に少なくとも 2 つのインスタンスを実行します。

高可用性のために環境の Auto Scaling グループを設定するには

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

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

  3. [Configuration] を選択します。

  4. [Scaling] セクションで、設定アイコン (  を編集します。 ) を選択します。

  5. [Auto Scaling] の下で、[Minimum instance count] を 2 に、[Maximum instance count] を 2 よりも大きい値に設定します。

  6. [Apply] を選択します。

確認

環境を起動すると、以下のリソースが作成されます。

  • 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 は含まれているすべてのリソースを終了します。 起動した RDS DB インスタンスは、環境外にありますので、お客様の責任において、ライフサイクルを管理してください。

注記

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

クリーンアップ

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

Elastic Beanstalk 環境を終了するには

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

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

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

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

さらに、Elastic Beanstalk 環境の外に作成したデータベースリソースを終了できます。Amazon RDS データベースインスタンスを削除する場合、スナップショットを作成し、後で別のインスタンスにデータを復元できます。

RDS DB インスタンスを削除するには

  1. Amazon RDS コンソールを開きます。

  2. [Instances] を選択します。

  3. DB インスタンスを選択します。

  4. [Instance Actions] を選択し、[Delete] を選択します。

  5. スナップショットを作成するかどうかを選択してから、[Delete] を選択します。

DynamoDB テーブルを削除するには

  1. DynamoDB コンソールで [Tables page] を開きます。

  2. テーブルを選択します。

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

  4. [Delete] を選択します。

次のステップ

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

サンプルアプリケーションは、設定ファイルを使用して、PHP 設定を設定し、存在しない場合はテーブルをデータベースに作成します。 設定ファイルを使用して、環境の作成時に時間がかかる設定更新を避けるために、インスタンスのセキュリティグループ設定を設定できます。 詳細については、「設定ファイル (.ebextensions) による高度な環境のカスタマイズ」を参照してください。

開発とテストのために、管理された DB インスタンスを環境に直接追加するために Elastic Beanstalk の機能を使用することが必要になる場合があります。 環境内でのデータベースのセットアップについては、「Elastic Beanstalk でデータベースを設定する」を参照してください。

高性能データベースが必要な場合は、Amazon Aurora の使用を検討します。 Amazon Aurora は MySQL 対応のデータベースエンジンで、商用データベース機能を低コストで提供します。 別のデータベースにアプリケーションを接続するには、セキュリティグループ設定手順を繰り返し、RDS 関連の環境プロパティを更新します

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