Elastic Beanstalk 環境にデータベースを追加する - AWS Elastic Beanstalk

Elastic Beanstalk 環境にデータベースを追加する

Elastic Beanstalk によって、Amazon Relational Database Service (Amazon RDS) との統合ができます。Elastic Beanstalk を使用して、MySQL、PostgreSQL、Oracle、または SQL Server データベースを既存または新規の環境に作成時に追加できます。データベースインスタンスを追加すると、Elastic Beanstalk からアプリケーションに接続情報が提供されます。これは、データベースのホスト名、ポート、ユーザー名、パスワード、およびデータベース名の環境プロパティを設定します。

アプリケーションでデータベースインスタンスを使用したことがない場合は、最初に、このトピックで説明するプロセスを使用して、Elastic Beanstalk サービスを使用してテスト環境にデータベースを追加することをお勧めします。これにより、 Elastic Beanstalk 外部のデータベースに必要な追加の設定作業をせずに、アプリケーションで環境プロパティを読み取り、接続文字列を作成し、データベースインスタンスに接続できることを確認できます。

アプリケーションがデータベースで正しく動作することを確認したら、本番環境に移行することを検討できます。この時点で、Elastic Beanstalk 環境からデータベースをデカップリングして、柔軟性が高い設定に移行することもできます。デカップリングされたデータベースは、外部 Amazon RDS データベースインスタンスとして動作し続けることができます。環境の健全性は、データベースをデカップリングしても影響を受けません。環境を終了する必要がある場合は、その環境を終了し、Elastic Beanstalk の外部で引き続きデータベースが使用可能な状態で運用することもできます。

外部データベースの使用にはいくつかの利点があります。複数の環境から外部データベースに接続したり、統合データベースでサポートされていないデータベースタイプを使用したり、Blue-Green デプロイメントを実行したりできます。Elastic Beanstalk が作成したデカップリングされたデータベースを使用する代わりに、Elastic Beanstalk 環境の外部でデータベースインスタンスを作成することもできます。どちらの方法でも、Elastic Beanstalk 環境外部のデータベースインスタンスを使用することになり、追加のセキュリティグループと接続文字列の設定が必要になります。詳細については、「Amazon RDS で Elastic Beanstalk を使用する」を参照してください。

データベースのライフサイクル

Elastic Beanstalk 環境からデータベースをデカップリングした後のデータベースの状態を選択できます。選択できるオプションは、総称して「削除ポリシー」と呼ばれます。次の削除ポリシーは、Elastic Beanstalk 環境からデカップリングした後、または Elastic Beanstalk 環境を終了した後のデータベースに適用されます。

  • Snapshot (スナップショット) – Elastic Beanstalk はデータベースを終了する前に、データベースのスナップショットを保存します。DB インスタンスを Elastic Beanstalk 環境に追加するとき、またはスタンドアロンデータベースを作成するときに、スナップショットからデータベースを復元できます。スナップショットからの新しいスタンドアロン DB インスタンスの作成の詳細については、Amazon RDS ユーザーガイドの「DB スナップショットからの復元」を参照してください。データベースのスナップショットを保存するときに料金が発生する場合があります。詳細については、Amazon RDS 料金表の「Backup ストレージ」セクションを参照してください。

  • Delete (削除) – Elastic Beanstalk はデータベースを終了します。終了後、データベースインスタンスはどのオペレーションにも使用できなくなります。

  • Retain (保持) – データベースインスタンスは終了しません。Elastic Beanstalk からデカップリングされていますが、引き続き利用可能で操作可能です。その後、外部 Amazon RDS データベースインスタンスとしてデータベースに接続するように、1 つまたは複数の環境を設定できます。詳細については、「Amazon RDS で Elastic Beanstalk を使用する」を参照してください。

コンソールを使用して環境に Amazon RDS DB インスタンスを追加する

Elastic Beanstalk コンソールを使用して、DB インスタンスを環境に追加できます。

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

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

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

    注記

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

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

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

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

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

次のオプションを設定できます。

  • [スナップショット] – 既存のデータベーススナップショットを選択します。Elastic Beanstalk はスナップショットを復元し、環境に追加します。デフォルト値は [なし] です。デフォルト値が [None] (なし) の場合、このページの他の設定を使用して新しいデータベースを設定できます。

  • [エンジン] – データベースエンジンを選択します。

  • [エンジンバージョン] – データベースエンジンの特定のバージョンを選択します。

  • [インスタンスクラス] – DB インスタンスのクラスを選択します。DB インスタンスクラスの詳細については、https://aws.amazon.com/rds/ を参照してください。

  • [ストレージ] – データベースのためにプロビジョニングするストレージの容量を選択します。割り当て済みストレージを後で増やすことはできますが、減らすことはできません。ストレージの割り当ての詳細については、「Features」を参照してください。

  • Username (ユーザー名) – 数字と文字のみの組み合わせを使用して、任意のユーザー名を入力します。

  • [パスワード] – 8~16 文字の印刷可能な ASCII 文字 (/\@ は除く) を含む任意のパスワードを入力します。

  • [可用性] – 高可用性のために、2 番目のアベイラビリティーゾーンでウォームバックアップを実行するには、[高 (マルチ AZ)] を選択します。

  • Database deletion policy (データベース削除ポリシー) – 削除ポリシーで、環境からデカップリングされた後のデータベースの状態が決まります。これに設定できる値は、Create SnapshotRetain、または Delete です。これらの値については、このトピックの中の「データベースのライフサイクル」を参照してください。

注記

Elastic Beanstalk を使用して、データベースのマスターユーザーを作成し、ユーザー名とパスワードを指定します。マスターユーザーとその権限の詳細については、「マスターユーザーアカウント特権」を参照してください。

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

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

RDS_HOSTNAME

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

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

RDS_PORT

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

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

RDS_DB_NAME

データベース名 ebdb

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

RDS_USERNAME

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

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

RDS_PASSWORD

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

Amazon RDS コンソールではリファレンスできません。

データベースに接続

アプリケーションの内部から環境変数を使用してデータベースに接続する場合は、接続情報を利用します。アプリケーションで Amazon RDS を使用する方法については、以下のトピックを参照してください。

コンソールを使用した統合 RDS DB インスタンスの設定

[Elastic Beanstalk console] (Elastic Beanstalk コンソール) から、環境の [Configuration] (設定) ページの [Database] (データベース) セクションで、データベースインスタンスの設定を表示および変更できます。

Elastic Beanstalk コンソールで環境の DB インスタンスを設定するには

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

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

    注記

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

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

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

データベースの作成後、[Instance class] (インスタンスクラス)、[Storage] (ストレージ)、[Password] (パスワード)、[Availability] (可用性)、および [Database deletion policy] (データベース削除ポリシー) の設定を変更することができます。インスタンスクラスを変更すると、Elastic Beanstalk は DB インスタンスを再プロビジョニングします。

データベースを環境に関連付けるのに Elastic Beanstalk が不要になった場合は、[Decouple database] (データベースをデカップリング) を選択して、データベースをデカップリングすることを選択できます。このオペレーションに関連するオプションと考慮事項を理解することが重要です。詳細については、「コンソールを使用した RDS DB インスタンスのデカップリング」を参照してください。

警告

Elastic Beanstalk で提供される機能以外 (例えば、Amazon RDS コンソールの機能など) で、カップリングされたデータベースインスタンスの設定を変更しないでください。これを行うと、Amazon RDS の DB 設定が環境定義と同期しない可能性があります。環境を更新または再起動すると、環境で指定された設定は、Elastic Beanstalk 以外の設定を上書きします。

Elastic Beanstalk が直接サポートしていない設定を変更する必要がある場合は、Elastic Beanstalk の設定ファイルを使用してください。

設定ファイルを使用した統合 RDS DB インスタンスの設定

設定ファイルを使用して、環境のデータベースインスタンスを設定できます。aws:rds:dbinstance 名前空間のオプションを使用します。次の例では、割り当てられたデータベースストレージサイズを 100 GB に変更します。

例 .ebextensions/db-instance-options.config

option_settings: aws:rds:dbinstance: DBAllocatedStorage: 100

Elastic Beanstalk がサポートしていない DB インスタンスのプロパティを設定する場合は、やはり設定ファイルを使用し、resources キーを使用して設定を指定することができます。次の例では、StorageType および Iops Amazon RDS のプロパティに値を設定します。

例 .ebextensions/db-instance-properties.config

Resources: AWSEBRDSDatabase: Type: AWS::RDS::DBInstance Properties: StorageType:io1 Iops: 1000

コンソールを使用した RDS DB インスタンスのデカップリング

環境の健全性に影響を与えることなく、データベースを Elastic Beanstalk 環境からデカップリングできます。データベースをデカップリングする前に、次の要件を考慮してください。

  • データベースがデカップリングされた後のデータベースの状態

    データベースのスナップショットを作成して終了するか、データベースを保持して Elastic Beanstalk 外部のスタンドアロンデータベースとして動作させるか、データベースを完全に削除するかを選択できます。[Database deletion policy] (データベース削除ポリシー) 設定により、この結果が決まります。削除ポリシーの詳細については、このトピックの中の「データベースのライフサイクル」を参照してください。

  • デカップリングする前に、データベース設定を変更する必要があるか。

    データベースの設定を変更する必要がある場合は、データベースをデカップリングする前に適用する必要があります。これには、[Database deletion policy] (データベース削除ポリシー) の変更も含まれます。[Decouple database] (データベースをデカップリング) 設定と同時に送信される保留中の変更は無視され、デカップリング設定のみが適用されます。

環境から DB インスタンスをデカップリングするには

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

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

    注記

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

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

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

  5. [Database settings] (データベース設定) セクションのすべての設定値を確認します。特に、[Database deletion policy] (データベース削除ポリシー) は、デカップリング後のデータベースの状態を決めるので、よく確認します。

    その他の設定がすべて正しい場合は、ステップ 6 に進み、データベースをデカップリングします。

    警告

    [Decouple database] (データベースをデカップリング) とは別に[Database deletion policy] (データベース削除ポリシー) 設定を適用することが重要です。[Decouple database] (データベースをデカップリング) と新たに選択した [Database deletion policy] (データベース削除ポリシー) の両方を保存しようとして [Apply] (適用) をクリックしても、選択した新しい削除ポリシーは無視されます。Elastic Beanstalk は、以前に設定された削除ポリシーに従ってデータベースをデカップリングします。以前に設定された削除ポリシーが Delete または Create Snapshot の場合、適用しようとした保留中のポリシーは適用されず、データベースが失われる危険性があります。

    いずれかの設定で更新が必要な場合は、次の操作を行います。

    1. [Database settings] (データベース設定) パネルで必要な修正を行います。

    2. [Apply] を選択します。データベースの設定の変更を保存するには、数分かかります。

    3. ステップ 3 に戻り、ナビゲーションペインから [Configuration] (設定) を選択します。

  6. ペインの [Database connection] (データベース接続) セクションに移動します。

  7. [Decouple database] (データベースをデカップリング) を選択します。

  8. [Apply] (適用) をクリックして、データベースのデカップリング操作を開始します。

削除ポリシー設定によって、データベースがどうなるかと、データベースをデカップリングするために必要な時間の長さが決まります。

  • 削除ポリシーが Delete に設定されている場合、データベースが削除されます。データベースのサイズによっては、オペレーションにおよそ 10~20 分かかることがあります。

  • 削除ポリシーが Snapshot に設定されている場合、データベースのスナップショットが作成されます。その後、データベースが削除されます。このプロセスに必要な時間は、データベースのサイズによって異なります。

  • 削除ポリシーが Retain に設定されている場合、データベースは引き続き Elastic Beanstalk 環境の外部で動作します。通常、データベースをデカップリングするには 5 分もかかりません。

Elastic Beanstalk 環境の外部にデータベースを保持することに決めた場合は、追加の手順を実行してデータベースを設定する必要があります。詳細については、「Amazon RDS で Elastic Beanstalk を使用する」を参照してください。デカップリングしたデータベースを実稼働環境で使用する場合は、データベースが使用するストレージタイプがワークロードに適していることを確認します。詳細については、Amazon RDS ユーザーガイドの「Amazon RDS DB インスタンスストレージ」および「Amazon RDS DB インスタンスを変更する」を参照してください。

設定ファイルを使用して RDS DB インスタンスをデカップリングする

環境の健全性に影響を与えずに、DB インスタンスを Elastic Beanstalk 環境からデカップリングできます。データベースがデカップリングされたとき、データベースインスタンスは、適用された [データベース削除ポリシー] に従います。

データベースをデカップリングするために必要なオプションは両方とも、aws:rds:dbinstance 名前空間にあります。その内容は次のとおりです。

  • DBDeletionPolicy オプションで、削除ポリシーが設定されます。これに設定できる値は、SnapshotDelete、または Retain です。これらの値については、このトピックの中の「データベースのライフサイクル」を参照してください。

  • HasCoupledDatabase オプションで、環境にカップリングされたデータベースがあるかどうかが決まります。

    • true にした場合、Elastic Beanstalk によって環境にカップリングされた新しい DB インスタンスが作成されます。

    • false にした場合、Elastic Beanstalk によって環境から DB インスタンスがデカップリングされます。

デカップリングする前にデータベース設定を変更する場合は、まず設定の変更を別のオペレーションで適用します。これには、DBDeletionPolicy 設定の変更も含まれます。変更が適用されたら、別のコマンドを実行してデカップリングオプションを設定します。他の設定とデカップリング設定を同時に送信すると、デカップリング設定は適用されますが、他のオプション設定は無視されます。

警告

DBDeletionPolicyHasCoupledDatabase の設定を 2 つの別々のオペレーションとして適用するようにコマンドを実行することが重要です。現在有効な削除ポリシーが Delete または Snapshot に設定されてしまっている場合、データベースが失われる危険性があります。データベースは、適用しようとした保留中の削除ポリシーではなく、現在有効な削除ポリシーに従います。

環境から DB インスタンスをデカップリングするには

次の手順に従って、Elastic Beanstalk 環境からデータベースをデカップリングします。EB CLI または AWS CLI を使用して、手順を完了します。詳細については、「設定ファイルによる高度な環境のカスタマイズ」を参照してください。

  1. 削除ポリシーを変更する場合は、次の形式で設定ファイルを設定します。この例では、削除ポリシーは保持に設定されています。

    option_settings: aws:rds:dbinstance: DBDeletionPolicy: Retain
  2. 任意のツールを使用してコマンドを実行し、設定の更新を完了します。

  3. 設定ファイルをセットアップして、HasCoupledDatabasefalse に設定します。

    option_settings: aws:rds:dbinstance: HasCoupledDatabase: false
  4. 任意のツールを使用してコマンドを実行し、設定の更新を完了します。

削除ポリシー設定によって、データベースがどうなるかと、データベースを分離するために必要な時間の長さが決まります。

  • 削除ポリシーが Delete に設定されている場合、データベースが削除されます。データベースのサイズによっては、オペレーションにおよそ 10~20 分かかることがあります。

  • 削除ポリシーが Snapshot に設定されている場合、データベースのスナップショットが作成されます。その後、データベースが削除されます。このプロセスに必要な時間は、データベースのサイズによって異なります。

  • 削除ポリシーが Retain に設定されている場合、データベースは引き続き Elastic Beanstalk 環境の外部で動作します。通常、データベースをデカップリングするには 5 分もかかりません。

Elastic Beanstalk 環境の外部にデータベースを保持することに決めた場合は、追加の手順を実行してデータベースを設定する必要があります。詳細については、「Amazon RDS で Elastic Beanstalk を使用する」を参照してください。デカップリングしたデータベースを実稼働環境で使用する場合は、データベースが使用するストレージタイプがワークロードに適していることを確認します。詳細については、Amazon RDS ユーザーガイドの「Amazon RDS DB インスタンスストレージ」および「Amazon RDS DB インスタンスを変更する」を参照してください。