既存のRDSインスタンスをElastic Beanstalk環境に関連付ける方法


22

Elastic Beanstalk環境を作成する前に、RDSインスタンスを作成しました。この2つは問題なく連携していますが、リンクして、RDS_*環境変数を介してRDSパラメーターにアクセスできるようにします。

Elastic Beanstalk設定ページには次のように記載されています。

データベースがありません。 新しいRDSデータベースを作成するか、既存のデータベースを使用できます。

最初のリンクはインプレースでRDSインスタンスを作成し、それを現在の環境にリンクしますが、2番目のリンクは単にこのドキュメントページにリダイレクトします。、残念ながら新しいRDSインスタンスを作成する方法のみを説明し、既存のインスタンスをリンクする方法は説明しません。

既存のRDSインスタンスをElastic Beanstalk環境に関連付けるにはどうすればよいですか?

回答:


24

「選択された」答えは正しいのですが、EBとRDSを一緒に使用するほとんどの人は、まだ知らない場合でも同じ要件があるはずなので、追加情報を追加したかったのです。

最初の質問:なぜRDSインスタンスをEB環境の外部に存在させたいのですか? 回答:そのため、RDSインスタンスのライフタイムはEB環境のライフタイムに関連付けられません。つまり、環境を削除するとき、それを使用してDBを破壊したくありません。実際にRDSインスタンスを環境に結び付けたい理由はほとんどありません。

EBとは別にRDSを設定する際の問題は、RDS_ *変数が自動的に入力されないため、Webコンソールまたは.ebextensionsを介して値を取得して自分で入力する必要があることです。ただし、セキュリティホールになる可能性があるため、コードに資格情報を追加することはお勧めしません。

ただし、次の問題は、プログラムで環境を作成する場合(青緑のゼロダウンタイム展開など)、毎回機密RDS値(パスワードなど)を入力する方法のソリューションが必要です。残念ながら、これにはAWSスタックをさらにドロップダウンしてCloudFormationテンプレートを使用する必要があります。

理想的な解決策はEBの機能強化であり、質問で言及されている「既存のデータベースを使用」リンクを使用すると、実際に手動で既存のRDSデータベースを関連付け、RDS_ *環境変数が自動的に再入力され、役に立たないドキュメントにリダイレクトされます。AWSサポートは、これは機能リクエストとして提起されたが、もちろん時間枠は与えられていないと述べました。


一年後、それはまだそうです?
lifeofguenter

1
それでも私が知る限りでは。
rgareth

このAWSをどのようにバンプしますか?
マシュー

1年後、それはまだ同じです。
カランクマール

rdsdocs.aws.amazon.com/elasticbeanstalk/latest/dg/…を追加するための手順(検索する私のような人のためだけ)環境設定を作成せず、作成時に設定ファイルを介してロードします。これはenv変数を追加する必要があります。変更しない限り、これで問題ありませんか?
マヌエル

18

AWSサポートからの回答:

既存のデータベースをEB環境に関連付けるには、管理コンソールからデータベースのスナップショットを作成し、データレイヤーの下で「新しいRDSデータベースを作成」を選択する必要があります。RDSインスタンスがBeanstalk環境の基盤となるCloudformationスタックに関連付けられているため、スナップショットから新しいインスタンスを起動せずに、実行中のRDSインスタンスを既存のEB環境に関連付ける方法はないようです。現在のRDSインスタンスのスナップショットを作成する場合、必要に応じてEBで新たに開始できます。

RDSインスタンスを環境外に存在させる場合は、EB Consoleを介して接続パラメーターを環境変数として指定するだけで済みます:[構成]-> [Webレイヤー]-> [ソフトウェア構成]。その後、PHP経由で環境変数を読み取ることができます


規則に従うためにRDS_ *名で環境変数を定義する2番目のアプローチを取りました。セキュリティグループはかなり厳しく設定されていますが、環境変数にDBパスワードを設定するのは少しゆるい感じがします。
ジョセフシーディー

@velotron私にとっても同じですが、私はそれに慣れました!
ベンジャミン

2

私は最近これを必要とし、AWS CLI / EB CLIを使用してステップを自動化することも望みました。いずれにせよ、基本的に私が従った手順は次のとおりです(すでにRDSインスタンスを作成済みであると仮定):

  1. RDSインスタンスに別のセキュリティグループが設定されていることを確認してください(VPCのデフォルトグループではありません)。そのためにaws ec2 create-security-group(AWS CLI)を使用し、(AWS CLI)を使用してRDSインスタンスに関連付けることができますaws rds modify-db-instance
  2. beanstalkアプリケーションを初期化します(そのためにeb init(EB CLI)を使用しました)。
  3. RDSデータベースから関連する構成データ(DB名、ホスト名、ポートなど)を読み取ります。私aws rds describe-db-instancesはそのために使用しました。
  4. RDS_*環境を作成する(または後で環境を展開する)ときに、そのデータを使用してEBインスタンスの環境変数を設定します。eb create/ eb deploy(EB CLI)でこれを行うことができます。RDSデータベースにアクセスするセキュリティグループが適切に設定されていないため、最初に環境を作成すると、環境が低下します。
  5. EB構成から関連するセキュリティグループを取得します。自動スケーリンググループおよびエラスティックロードバランサー用に必要です。そのためにaws elasticbeanstalk describe-configuration-settings(AWS CLI)を使用できます。
  6. ステップ1で設定したセキュリティグループのデータベースへのインバウンドトラフィックの自動スケーリンググループを認証します。aws ec2 authorize-security-group-ingressそのために、(DBセキュリティグループではなく)VPCセキュリティグループを使用する(AWS CLI)を使用しました。お使いの地域でサポートされている場合、おそらくDBセキュリティグループで同じことを達成できます。着信トラフィックルールを設定するときは、データベースエンジンに適切なプロトコルとポートを使用していることを確認してください。
  7. エラスティックロードバランサーグループをRDSインスタンスのセキュリティグループに追加します(再度aws rds modify-db-instance(AWS CLI)を使用します)。
  8. Elastic Beanstalkアプリケーションを再起動または再デプロイします(たとえばeb deploy(EB CLI)を使用)。デプロイメントでマイグレーションを実行するため、再デプロイする必要がありました。

それがほとんどです。ホスト名とDBクレデンシャルを同じに保つ限り、EBインスタンスを気にせずにRDSインスタンスをスケールアップ/ダウンできるようになります。また、そのアプローチでブルー/グリーン展開を行うこともできます(ただし、セキュリティグループアクセスを取り消すために、いくつかの追加手順が必要になる場合があります)。


0

構成によって既存のセキュリティグループをEB EC2インスタンスに追加する最も簡単な方法は、https://github.com/awsdocs/elastic-beanstalk-samples/blob/master/configuration-files/aws-provided/で説明されている単純なファイルを使用することですsecurity-configuration / securitygroup-addexisting.config

例えば:

$ cat .ebextensions/securitygroup-addexisting.config
option_settings:
  - namespace: aws:autoscaling:launchconfiguration
    option_name: SecurityGroups
    value: rds-launch-wizard-1

0

私は同じ問題に直面しており、次の手順を使用して修正しました:

1)EC2インスタンスに移動し、セキュリティグループの例「sg-121212121212」に注意してください

2)RDSセキュリティグループad = ndインバウンドトラフィックに移動

3)ルールを編集してすべてのトラフィックを選択し、新しいebsセキュリティグループ「sg-121212121212」を追加します

お役に立てば幸いです


-2

ElasticでRDSを作成します。新しい正しいセキュリティグループが追加されます。古い既存のRDSのセキュリティグループを変更します。Web設定ですべての作業に正しい接続文字列を設定...

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.