AWS Elastic Beanstalk 再開 – 環境構築 – RDS
Elastic Beanstalk で環境を構築すると、以前は自動でRDSが構成されていたのだが、手動で構成が必要になったようだ。
データベースのライフサイクルがアプリケーションに依存しなくなるので、面倒ではあるが、その方が望ましい。
http://docs.aws.amazon.com/ja_jp/elasticbeanstalk/latest/dg/AWSHowTo.RDS.html
以下手順をメモ。
1.RDS インスタンスをデフォルトの VPC 内で起動
RDSマネジメントコンソールを開きDBインスタンスの起動
ウィザードを進める
以下の設定値を書きとめる
- DBインスタンス識別子
- マスターユーザーの名称
- マスターパスワード
以下を設定
-
VPC –
Default VPC
-
Subnet Group –
default
-
Publicly Accessible –
No
-
Availability Zone –
No Preference
-
VPC Security Groups –
Create new Security Group
以下を書きとめる
データベースの名前
データベースのポート
必要に応じて以下の設定
2.RDS インスタンスのセキュリティグループの進入ルールを変更
- RDSコンソールを開き、インスタンスを選択、インスタンスを選択しビューを展開し、Detailsタブを開く
- セキュリティーグループのリンクを選択
EC2のセキュリティーグループの画面が開くので、インバウンドタブを選択し、ルールを追加し、保存する。
- Type – DBエンジン
- Souce – Custom IP を選択し、セキュリティーグループ自体のIDを入力する
同じグループ内の他のリソースからのトラフィックをデータベースポートで受信するためのセキュリティグループリソースを提供
3.環境にセキュリティグループを追加
- Elastic Beanstalk コンソールを開き、ダッシュボードから設定を選び、インスタンスを選択
- EC2 セキュリティグループ の末尾に、カンマを入力し、続けて「
rds-launch-wizard」を入力
適用、保存
4.環境プロパティを設定
Elastic Beanstalk コンソールを開き、ダッシュボードから設定を選び、ソフトウェア設定を選択
以下のプロパティを追加する(上記手順で書きとめた値を利用する)
-
RDS_DB_NAME – Amazon RDS コンソールに表示される [DB Name]。
-
RDS_USERNAME – 環境にデータベースを追加するときに入力する [Master Username]。
-
RDS_PASSWORD – 環境にデータベースを追加するときに入力する [Master PASSWORD]。
-
RDS_HOSTNAME – Amazon RDS コンソールに表示される DB インスタンスの [Endpoint]。
-
RDS_PORT – Amazon RDS コンソールに表示される [Port]。
5.Django の設定
Python での新しい Amazon RDS DB インスタンスの使用
import os if 'RDS_HOSTNAME' in os.environ: DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': os.environ['RDS_DB_NAME'], 'USER': os.environ['RDS_USERNAME'], 'PASSWORD': os.environ['RDS_PASSWORD'], 'HOST': os.environ['RDS_HOSTNAME'], 'PORT': os.environ['RDS_PORT'], } }
ここまで設定できたら、コードのコミット、eb deploy を実行する
6.確認
6.1 Django アドミンサイト起動
OK!
6.2 SQL ワークベンチから、データベースの内容(テーブルが作成されたか)を確認
OK!
これで、開発の準備は整ったよ。
以前の作業
- (1) Django起動まで
- (2) (TIPS) SSH、RDSへの接続
- (3) (TIPS) ログの確認とデプロイ結果の確認
- (4) いくつかのトラブルシュート
- (5) アプリケーションの作成
- (6) createadmin スクリプトの実行のトラブルシュート
- (7) 静的IPアドレスの設定とドメインの取得とDNSの設定
- AWS Elastic Beanstalk RDS の文字コードをutf-8に設定しなおす
- Djangoでバッチ処理を行う(AWS Elasticbeanstalk)