PHP アプリケーション環境に Amazon RDS DB インスタンスを追加 - AWS Elastic Beanstalk

PHP アプリケーション環境に Amazon RDS DB インスタンスを追加

Amazon Relational Database Service (Amazon RDS) DB インスタンスを使用して、アプリケーションによって収集されて変更されたデータを保存できます。データベースは、Elastic Beanstalk でお客様の環境にアタッチして管理したり、外部で作成して管理したりできます。

初めて Amazon RDS を使用する場合は、Elastic Beanstalk コンソールを使用してテスト環境に DB インスタンスを追加し、そのインスタンスにアプリケーションが接続できることを確認します。

データベースに接続するには、アプリケーションに適切なドライバーを追加し、コードにドライバクラスをロードした後、Elastic Beanstalk に用意された環境プロパティにより接続オブジェクトを作成します。設定と接続コードは、使用するデータベースエンジンとフレームワークによって異なります。

注記

学習目的またはテスト環境では、Elastic Beanstalk を使用して DB インスタンスを追加できます。

本番稼働環境では、Elastic Beanstalk 環境外部に DB インスタンスを作成し、データベースリソースから環境リソースを分離できます。この方法を使用することにより、環境を終了するときに DB インスタンスは削除されません。外部 DB インスタンスを使用すると、複数の環境から同じデータベースに接続し、Blue/Green デプロイを実行することができます。手順については、「Amazon RDS で Elastic Beanstalk を使用する」を参照してください。

環境に DB インスタンスを追加

お客様の環境に DB インスタンスを追加するには

  1. Elastic Beanstalk コンソールを開き、[リージョン] のリストで AWS リージョンを選択します。

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

    注記

    環境が多数ある場合は、検索バーを使用して環境リストをフィルタリングします。

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

  4. [データベース] 設定カテゴリで、[編集] を選択します。

  5. DB エンジンを選択して、ユーザー名とパスワードを入力します。

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

DB インスタンスの追加には約 10 分かかります。環境の更新が完了すると、DB インスタンスのホスト名とその他の接続情報は以下の環境プロパティを通じてアプリケーションに使用できるようになります。

プロパティ名 説明 プロパティ値

RDS_HOSTNAME

DB インスタンスのホスト名。

Amazon RDS コンソールの [Connectivity & security (接続とセキュリティ)] タブ: [Endpoint (エンドポイント)]。

RDS_PORT

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

Amazon RDS コンソールの [Connectivity & security (接続とセキュリティ)] タブ: [Port (ポート)]。

RDS_DB_NAME

データベース名 ebdb

Amazon RDS コンソールの [設定] タブ: [DB 名]。

RDS_USERNAME

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

Amazon RDS コンソールの [設定] タブ: [マスターユーザー名]。

RDS_PASSWORD

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

Amazon RDS コンソールでは参照できません。

内部 DB インスタンスの設定の詳細については、データベースを Elastic Beanstalk 環境に追加するを参照してください。

ドライバーのダウンロード

PHP データオブジェクト (PDO) を使用してデータベースに接続するには、選択したデータベースエンジンに一致するドライバーをインストールします。

詳細については、「http://php.net/manual/en/pdo.installation.php」を参照してください。

PDO または MySQLi を使用してデータベースに接続

$_SERVER[`VARIABLE`] を使用して、環境から接続情報を読み取ることができます。

PDO では、ホスト、ポート、名前からデータソース名 (DSN) を作成します。データベースのユーザー名とパスワードを使用して、PDO のコンストラクタに DSN を渡します。

例 PDO - MySQL を使用して RDS データベースに接続する

<?php $dbhost = $_SERVER['RDS_HOSTNAME']; $dbport = $_SERVER['RDS_PORT']; $dbname = $_SERVER['RDS_DB_NAME']; $charset = 'utf8' ; $dsn = "mysql:host={$dbhost};port={$dbport};dbname={$dbname};charset={$charset}"; $username = $_SERVER['RDS_USERNAME']; $password = $_SERVER['RDS_PASSWORD']; $pdo = new PDO($dsn, $username, $password); ?>

他のドライバーについては、mysql をドライバー –pgsql ocisqlsrv の名前に置き換えます。

MySQLi については、ホスト名、ユーザー名、パスワード、データベース名、およびポートを mysqli コンストラクタに渡します。

例 mysqli_connect() を使用して RDS データベースに接続する

$link = new mysqli($_SERVER['RDS_HOSTNAME'], $_SERVER['RDS_USERNAME'], $_SERVER['RDS_PASSWORD'], $_SERVER['RDS_DB_NAME'], $_SERVER['RDS_PORT']);

Symfony を使用してデータベースに接続する

Symfony バージョン 3.2 以降については、%env(PROPERTY_NAME)% を使用し、Elastic Beanstalk で設定された環境プロパティに基づいて設定ファイルのデータベースパラメータを設定します。

例 app/config/parameters.yml

parameters: database_driver: pdo_mysql database_host: '%env(RDS_HOSTNAME)%' database_port: '%env(RDS_PORT)%' database_name: '%env(RDS_DB_NAME)%' database_user: '%env(RDS_USERNAME)%' database_password: '%env(RDS_PASSWORD)%'

詳細については、外部パラメータ (Symfony 3.4) に関する記事を参照してください。

旧バージョンの Symfony については、SYMFONY__ で始まる環境変数にのみアクセスできます。Elastic Beanstalk 定義の環境プロパティにはアクセスできません。また、Symfony に接続情報を渡すには、独自の環境プロパティを定義する必要があります。

Symfony 2 でデータベースに接続するには、パラメータごとに環境プロパティを作成します。次に、%property.name% を使用して、設定ファイルの Symfony で変換された変数にアクセスします。たとえば、SYMFONY__DATABASE__USER という名前の環境プロパティには database.user としてアクセスできます。

database_user: "%database.user%"

詳細については、外部パラメータ (Symfony 2.8) に関する記事を参照してください。