

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

# 外部 Amazon RDS データベースを使用して高可用性の PHP アプリケーションを Elastic Beanstalk にデプロイする
<a name="php-ha-tutorial"></a>

このチュートリアルでは、外部の [RDS DB インスタンスを起動](AWSHowTo.RDS.md)し AWS Elastic Beanstalk、PHP アプリケーションを実行する高可用性環境を設定して接続するプロセスについて説明します。Elastic Beanstalk の外部で DB インスタンスを実行すると、データベースが環境のライフサイクルから切り離されます。これにより、複数の環境から同じデータベースに connect したり、あるデータベースから別のデータベースに切り替えたり、データベースに影響を与えずに Blue/Green デプロイを実行したりできます。

チュートリアルでは、ユーザー提供のテキストデータを保存するために MySQL データベースを使用する[サンプル PHP アプリケーション](https://github.com/awslabs/eb-demo-php-simple-app)を使用します。サンプルアプリケーションは、[設定ファイル](ebextensions.md)を使用して、[PHP 設定](create_deploy_PHP.container.md#php-namespaces)を設定し、アプリケーションが使用するデータベース内にテーブルを作成します。[Composer ファイル](create_deploy_PHP.container.md#php-configuration-composer)を使用して、デプロイの間にパッケージをインストールする方法も示します。

**Topics**
+ [前提条件](#php-hawrds-tutorial-prereqs)
+ [Amazon RDS に DB インスタンスを起動する](#php-hawrds-tutorial-database)
+ [Elastic Beanstalk 環境の作成](#php-hawrds-tutorial-create)
+ [セキュリティグループ、環境プロパティ、およびスケーリングの設定](#php-hawrds-tutorial-configure)
+ [サンプルアプリケーションをデプロイする](#php-hawrds-tutorial-deploy)
+ [クリーンアップ](#php-hawrds-tutorial-cleanup)
+ [次の手順](#php-hawrds-tutorial-nextsteps)

## 前提条件
<a name="php-hawrds-tutorial-prereqs"></a>

スタートする前に、サンプルアプリケーション出典バンドルを GitHub からダウンロードします。[eb-demo-php-simple-app-1.3.zip](https://github.com/aws-samples/eb-demo-php-simple-app/releases/download/v1.3/eb-demo-php-simple-app-v1.3.zip)

Amazon Relational Database Service (Amazon RDS) タスクのためのこのチュートリアルの手順は、リソースをデフォルト [Amazon Virtual Private Cloud](https://docs.aws.amazon.com/vpc/latest/userguide/) (Amazon VPC) 内で起動していることを前提としています。すべての新しいアカウントでは、各リージョンにデフォルト VPC が含まれます。デフォルト VPC がない場合、手順は異なります。EC2-Classic およびカスタム VPC プラットフォームの手順については、「[Amazon RDS で Elastic Beanstalk を使用する](AWSHowTo.RDS.md)」を参照してください。

## Amazon RDS に DB インスタンスを起動する
<a name="php-hawrds-tutorial-database"></a>

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 コンソール](https://console.aws.amazon.com/rds/home)を開きます。

1. ナビゲーションペインで、[**データベース**] を選択します。

1. **[データベースの作成]** を選択します。

1. [**Standard Create (スタンダード作成)**] を選択します。
**重要**  
[**Easy Create (簡易作成)**] を選択しないでください。これを選択した場合、この RDS DB の起動に必要な設定ができません。

1. [**Additional configuration (追加の設定)**] の [**Initial database name (初期データベース名)**] に 「**ebdb**」と入力します。

1. デフォルト設定を確認し、特定の要件に従ってこれらの設定を調整します。以下のオプションに注目します。
   + **DB instance class (DB インスタンスクラス)** – ワークロードに適したメモリ量と CPU 能力があるインスタンスサイズを選択します。
   + **Multi-AZ deployment (マルチ AZ 配置)** – 高可用性を得るには、これを [**Create an Aurora Replica/Reader node in a different AZ (異なる AZ に Aurora レプリカ/リーダーノードを作成)**] に設定します。
   + [**Master username (マスター・ユーザーネーム)**] と [**Master password (マスターパスワード)**] – データベースのユーザー名とパスワード。後で使用するため、これらの設定を書き留めておきます。

1. 残りのオプションのデフォルト設定を確認し、[**データベースの作成**] を選択します。

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

**RDS インスタンスにアタッチされているセキュリティグループのインバウンドルールを変更するには**

1. [Amazon RDS コンソール](https://console.aws.amazon.com/rds/home)を開きます。

1. [**データベース**] を選択します。

1. 詳細を表示する DB インスタンスの名前を選択します。

1. **[接続]** セクションで、このページに表示される **[サブネット]**、**[セキュリティグループ]**、**[エンドポイント]** をメモします。これは、後でこの情報を使用できるようにするためです。

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

1. セキュリティグループの詳細で、**インバウンド** を選択します。

1. **[編集]** を選択します。

1. **[ルールの追加]** を選択します。

1. **タイプ** として、アプリケーションが使用する DB エンジンを選択します。

1. **出典** として、**sg-** と入力して、使用可能なセキュリティグループのリストを表示します。Elastic Beanstalk 環境で使用される Auto Scaling グループに関連付けられているセキュリティグループを選択します。これは、環境内の Amazon EC2 インスタンスがデータベースにアクセスできるようにするためです。  
![\[Amazon EC2 コンソールのセキュリティグループのインバウンドルールを編集する画面の画像。\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/ec2-securitygroup-rds.png)

1. **[保存]** を選択します。

DB インスタンスの作成には約 10 分かかります。その間に、Elastic Beanstalk 環境を作成します。

## Elastic Beanstalk 環境の作成
<a name="php-hawrds-tutorial-create"></a>

Elastic Beanstalk コンソールを使用して、Elastic Beanstalk 環境を作成します。[**PHP**] プラットフォームを選択し、デフォルト設定およびサンプルコードを受け入れます。環境を起動した後、データベースに connect するために環境を設定して、GitHub からダウンロードしたサンプルアプリケーションをデプロイできます。

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

1. 事前に設定されたリンク ([console.aws.amazon.com/elasticBeanstalk/home\$1/newApplication?applicationName=tutorials&environmentType=LoadBalanced](https://console.aws.amazon.com/elasticbeanstalk/home#/newApplication?applicationName=tutorials&environmentType=LoadBalanced)) を使用して、Elastic Beanstalk コンソールを開きます。

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

1. **アプリケーションコード** として、**サンプルアプリケーション** を選択します。

1. **確認と起動** を選択します。

1. 使用できるオプションを確認します。使用する有効なオプションを選択し、準備ができたら [**アプリケーションの作成**] を選択します。

環境の作成の所要時間は約 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 グループはレスポンスとしてスケールアップまたはダウンを行います。
+ **CloudFormation スタック** – Elastic Beanstalk は CloudFormation を使用して環境内のリソースを起動し、設定変更を伝達します。リソースは、[CloudFormation コンソール](https://console.aws.amazon.com/cloudformation)に表示できるテンプレートで定義されます。
+ **ドメイン名** – ウェブ・アプリケーションまでのルートとなるドメイン名であり、**subdomain*.*region*.elasticbeanstalk.com* の形式です。
**ドメインセキュリティ**  
Elastic Beanstalk アプリケーションのセキュリティを強化するため、*elasticbeanstalk.com* ドメインは[パブリックサフィックスリスト (PSL)](https://publicsuffix.org/) に登録されています。  
Elastic Beanstalk アプリケーションのデフォルトドメイン名に機密性のある Cookie を設定する必要がある場合は、セキュリティ強化のため `__Host-` プレフィックスの付いた Cookie の使用をお勧めします。このプラクティスは、クロスサイトリクエストフォージェリ (CSRF) 攻撃からドメインを防御します。詳細については、Mozilla 開発者ネットワークの「[Set-Cookie](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie#cookie_prefixes)」ページを参照してください。

これらのリソースはすべて Elastic Beanstalk によって管理されます。環境を終了すると、Elastic Beanstalk は含まれているすべてのリソースを終了します。起動した RDS DB インスタンスは、環境外にありますので、お客様の責任において、ライフサイクルを管理してください。

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

## セキュリティグループ、環境プロパティ、およびスケーリングの設定
<a name="php-hawrds-tutorial-configure"></a>

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

**環境にセキュリティグループを追加するには**
+ 次のいずれかを行います。
  + Elastic Beanstalk コンソールを使用してセキュリティグループを追加するには

    1. [Elastic Beanstalk コンソール](https://console.aws.amazon.com/elasticbeanstalk)を開き、**リージョン**リストで を選択します AWS リージョン。

    1. ナビゲーションペインで、[**環境**] を選択し、リストから環境の名前を選択します。

    1. ナビゲーションペインで、[**設定**] を選択します。

    1. [**インスタンス**] 設定カテゴリで、[**編集**] を選択します。

    1. **EC2 セキュリティグループ**で、Elastic Beanstalk が作成するインスタンスセキュリティグループに加えて、インスタンスにアタッチするセキュリティグループを選択します。

    1. ページの最下部で **[適用]** を選択し変更を保存します。

    1. 警告を読み取り、**確認** を選択します。
  + [設定ファイル](ebextensions.md)を使用してセキュリティグループを追加するには、[https://github.com/awsdocs/elastic-beanstalk-samples/tree/main/configuration-files/aws-provided/security-configuration/securitygroup-addexisting.config](https://github.com/awsdocs/elastic-beanstalk-samples/tree/main/configuration-files/aws-provided/security-configuration/securitygroup-addexisting.config) サンプルファイルを使用します。

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

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

1. [Elastic Beanstalk コンソール](https://console.aws.amazon.com/elasticbeanstalk)を開き、**リージョン**リストで を選択します AWS リージョン。

1. ナビゲーションペインで、[**環境**] を選択し、リストから環境の名前を選択します。

1. ナビゲーションペインで、[**設定**] を選択します。

1. **[更新、モニタリング、ログ]** の設定カテゴリで、**[編集]** を選択します。

1. [**環境プロパティ**] セクションで、アプリケーションが読み取りする変数を定義して、接続文字列を構成します。統合された RDS DB インスタンスがある環境との互換性を考慮して、以下の名前と値を使用します。パスワードを除くすべての値は、[RDS コンソール](https://console.aws.amazon.com/rds/home)で見つかります。    
[\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/php-ha-tutorial.html)  
![\[RDS プロパティが追加された環境プロパティ設定セクション\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/environment-cfg-envprops-rds.png)

1. ページの最下部で **[適用]** を選択し変更を保存します。

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

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

1. [Elastic Beanstalk コンソール](https://console.aws.amazon.com/elasticbeanstalk)を開き、**リージョン**リストで を選択します AWS リージョン。

1. ナビゲーションペインで、[**環境**] を選択し、リストから環境の名前を選択します。

1. ナビゲーションペインで、[**設定**] を選択します。

1. [**容量**] 設定カテゴリで、[**編集**] を選択します。

1. [**Auto Scaling group (Auto Scaling グループ)**] セクションで、[**Min instances (最小インスタンス数)**] を **2** に設定します。

1. ページの最下部で **[適用]** を選択し変更を保存します。

## サンプルアプリケーションをデプロイする
<a name="php-hawrds-tutorial-deploy"></a>

これで環境がサンプルアプリケーションを実行し、Amazon RDS に connect する準備ができました。環境にサンプルアプリケーションをデプロイします。

**注記**  
GitHub から出典バンドルをダウンロードしていない場合は、ダウンロードします。[eb-demo-php-simple-アプリケーション-1.3.zip](https://github.com/aws-samples/eb-demo-php-simple-app/releases/download/v1.3/eb-demo-php-simple-app-v1.3.zip)

**出典バンドルをデプロイするには**

1. [Elastic Beanstalk コンソール](https://console.aws.amazon.com/elasticbeanstalk)を開き、**リージョン**リストで を選択します AWS リージョン。

1. ナビゲーションペインで、[**環境**] を選択し、リストから環境の名前を選択します。

1. 環境の概要ページで、[**Upload and deploy (アップロードとデプロイ)**] を選択します。

1. 画面上のダイアログボックスを使用して、ソースバンドルをアップロードします。

1. [**デプロイ**] を選択します。

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

サイトはユーザーコメントを収集し、MySQL データベースを使用してデータを保存します。コメントを追加するには、[**Share Your Thought**] を選択し、コメントを入力してから [**Submit Your Thought(Thought を送信）**] を選択します。ウェブ・アプリはデータベースにコメントを書き込みます。それにより、環境のすべてのインスタンスで読み取りができ、インスタンスがサービス停止状態になっても、失われないようにします。

![\[User interface for sharing thoughts, with a posted comment about Elastic Beanstalk on AWS.\]](http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/images/php-ha-tutorial-app.png)


## クリーンアップ
<a name="php-hawrds-tutorial-cleanup"></a>

デモコードの操作が完了したら、環境を終了できます。Elastic Beanstalk は、[Amazon EC2 インスタンス](using-features.managing.ec2.md)、[データベースインスタンス](using-features.managing.db.md)、[ロードバランサー](using-features.managing.elb.md)、セキュリティグループ、[アラーム](using-features.alarms.md#using-features.alarms.title)など、関連するすべての AWS リソースを削除します。

リソースを削除しても Elastic Beanstalk アプリケーションは削除されないため、いつでもアプリケーションの新しい環境を作成できます。

**コンソールから Elastic Beanstalk 環境を終了するには**

1. [Elastic Beanstalk コンソール](https://console.aws.amazon.com/elasticbeanstalk)を開き、**リージョン**リストで を選択します AWS リージョン。

1. ナビゲーションペインで、[**環境**] を選択し、リストから環境の名前を選択します。

1. **[Actions]** (アクション)、**[Terminate environment]** (環境の終了) の順に選択します。

1. 画面上のダイアログボックスを使用して、環境の終了を確認します。

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

**RDS DB インスタンスを終了するには**

1. [Amazon RDS コンソール](https://console.aws.amazon.com/rds)を開きます。

1. [**データベース**] を選択します。

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

1. **[アクション]**、**[削除]** の順に選択します。

1. スナップショットを作成するかどうかを選択してから、**削除** を選択します。

## 次の手順
<a name="php-hawrds-tutorial-nextsteps"></a>

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

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

開発とテストのために、マネージド DB インスタンスを環境に直接追加するために Elastic Beanstalk の機能を使用することが必要になる場合があります。環境内でのデータベースのセットアップについては、「[Elastic Beanstalk 環境にデータベースを追加する](using-features.managing.db.md)」を参照してください。

高パフォーマンスデータベースが必要な場合は、[Amazon Aurora](https://aws.amazon.com/rds/aurora/) の使用を検討します。Amazon Aurora は MySQL 対応のデータベースエンジンで、商用データベースの特徴を低コストで提供します。別のデータベースにアプリケーションに connect するには、[セキュリティグループ設定](#php-hawrds-tutorial-database)ステップを繰り返し、[RDS 関連の環境プロパティを更新](#php-hawrds-tutorial-configure)します。

最後に、本稼働環境でアプリケーションを使用する予定の場合は、お客様の環境に[カスタムドメイン名を設定](customdomains.md)し、安全な接続のために [HTTPS を有効にする](configuring-https.md)ことが必要になります。