ダウンタイム、データベース同期の問題、またはデータの損失なしで Amazon RDS インスタンスを Elastic Beanstalk 環境から疎結合化するにはどうすればよいですか?

最終更新日: 2020 年 9 月 23 日

AWS Elastic Beanstalk 環境にアタッチされた Amazon Relational Database Service (Amazon RDS) DB インスタンスがあります。インスタンスと環境間の依存関係を削除したいと考えています。ダウンタイム、データベース同期の問題、またはデータの損失を回避する方法はありますか?

簡単な説明

解決方法の手順に従って、次の操作を行います。

  • Elastic Beanstalk のブルー (環境 A)/グリーン (環境 B) デプロイメントを使用して、RDS DB インスタンスを環境 A から疎結合化します。
  • RDS DB インスタンスに接続するために必要な情報を使用して、新しい Elastic Beanstalk 環境 (環境 B) を作成します。

重要: RDS DB インスタンスを Elastic Beanstalk 環境にアタッチすることは、開発およびテスト環境に最適です。ただし、データベースインスタンスのライフサイクルはアプリケーション環境のライフサイクルに関連しているため、本番環境には推奨されません。環境を終了すると、RDS DB インスタンスが環境によって削除されるため、データが失われます。詳細については、Amazon RDS での Elastic Beanstalk の使用を参照してください。

解決方法

RDS DB スナップショットを作成する

  1. Elastic Beanstalk コンソールを開きます。
  2. RDS DB インスタンスから分離する Elastic Beanstalk 環境 (環境 A) を選択してください。
  3. ナビゲーションペインで、[設定] をクリックします。
  4. データベースの場合は、[変更] を選択します。
  5. [エンドポイント] を選択します。
  6. RDS DB インスタンスの RDS DB スナップショットを作成します。

RDS DB インスタンスを削除から保護する

  1. Amazon RDS コンソールを開きます。
  2. データベースを選択してから、[変更] を選択します。
  3. 削除保護」セクションで、[削除保護を有効にする] オプションを選択します。
  4. [続行] を選択します。
  5. [スケジューリングの修正] セクションで、[すぐに適用する] を選択します。
  6. [DB インスタンス変更] を選択します。
  7. Amazon RDS コンソールを更新してから、削除保護が有効になっていることを確認してください。

新しい AWS Elastic Beanstalk 環境を作成する

新しい Elastic Beanstalk 環境 (環境 B) では、同じ Elastic Beanstalk アプリケーションに RDS DB インスタンスを含めないでください。

注意: 後でブルー/グリーンのデプロイメント (または CNAME スワップ) を実行するには、環境 A環境 B が同じアプリケーションバージョンを使用していることを確認してください。

  1. 環境 B を作成します。
  2. 環境 B を環境 A の既存の RDS DB インスタンスに接続してください。
    注意: 詳細については、デフォルト VPC で外部 Amazon RDS インスタンスを起動して接続するを参照してください。
  3. 環境 B が既存の RDS DB インスタンスに接続できること、そしてアプリケーションが期待どおりに機能することを確認します。

ダウンタイムを回避するためにブルー/グリーンのデプロイメントを実行する

  1. 環境 BElastic Beanstalk コンソールを開きます。
  2. 古い Elastic Beanstalk 環境と新しい Elastic Beanstalk 環境の環境 URL をスワップしてください。
    注意: 詳細については、Elastic Beanstalk を使用したブルー/グリーンデプロイを参照してください。
  3. 開いたときに環境 B の URL が応答し、期待どおりに機能することを確認します。

重要: DNS の変更が反映されて古い DNS レコードが期限切れになるまで、環境 A を終了しないでください。DNS レコードが期限切れになるまで最大 48 時間かかることがあります。DNS サーバーは、DNS レコードに設定した有効期間 (TTL) に基づいて、キャッシュから古いレコードを必ずしも消去するわけではありません。

古い Elastic Beanstalk 環境のセキュリティグループルールを削除する

  1. Amazon RDS コンソールを開きます。
  2. データベースを選択してください。
  3. [接続とセキュリティ] ビューを選択します。
  4. [セキュリティ] から、変更する必要があるセキュリティグループを選択します。
  5. [アクション] で、[インバウンドルールの編集] を選択します。
  6. 環境 A のセキュリティグループをソースとして含むルールを削除します。
  7. Elastic Beanstalk コンソールで、環境 B とアプリケーションが期待通りに機能していることを確認します。

古い Elastic Beanstalk 環境を終了する

古い Elastic Beanstalk 環境 (環境 A) を終了します。

環境を終了すると、RDS DB インスタンスと古いセキュリティグループを除いて、すべての Elastic Beanstalk リソースが削除されます。削除保護により、RDS DB インスタンスと古いセキュリティグループが削除されなくなります。

環境を終了すると、Elastic Beanstalk イベントログに次のエラーメッセージが表示されます。

Deleting RDS database named: aaxxxxxxxxxx failed Reason: Cannot delete protected DB Instance aaxxxxxxxxxx, please disable deletion protection and try again
Stack deletion failed: The following resource(s) failed to delete: [AWSEBRDSDatabase].

スタックを削除する

  1. AWS CloudFormation コンソールを開きます。
  2. 環境 A の環境 ID に基づいてスタックを選択してください。
    注意: スタックのステータスは DELETE_FAILED です。
  3. [削除] を選択します。
  4. 保持するリソースを一覧表示する [スタックの削除] ポップアップウィンドウで、DELETE_FAILED ステータスでスタックしている RDS リソースを選択し、[削除] を選択します。
  5. (オプション) 環境 A を終了し、以前作成した RDS スナップショットを削除します。

この記事はお役に立ちましたか?


請求に関するサポートまたは技術的なサポートが必要ですか?