0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

[Python]ElasticBeanstalkでRDSのDBインスタンスを追加

Posted at

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

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

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

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

  1. EBコンソールからAWSリージョンを選択
  2. ナビゲーションペインで使用する環境を選択
  3. ナビゲーションペインで設定を選択
  4. データベース設定カテゴリで編集を選択
  5. DBエンジンを選択してユーザー名とパスワードを入力する
  6. Applyを選択

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

プロパティ名 説明 プロパティ値
RDS_HOSTNAME DBインスタンスのホスト名 Amazon RDSコンソールの[接続とセキュリティ]タブ:[エンドポイント]
RDS_PORT DBインスタンスが接続を許可するポート デフォルト値はDBエンジンによって異なる Amazon RDSコンソールの[接続とセキュリティ]タブ:[ポート]
RDS_DB_NAME EB名ebdb Amazon RDSコンソールの[設定]タブ:[ポート]
RDS_USETNAME データベース用に設定したユーザー名 Amazon RDSコンソールの[設定]タブ:[マスターユーザー名]
RDS_PASSWORD データベース用に設定したパスワード Amazon RDSコンソールにでは参照不可

内部DBインスタンスの設定の詳細についてはDBをEB環境に追加するを参照

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

プロジェクトの要件ファイル DBドライバーを追加する
例) requirements.txt

mysqlclient==1.3.12

Pythoの共通ドラーバーパッケージ

  • MySQL:MySL-python(Python 2)、mysqlclient(Python 3)
  • PostgreSQL:psycopg2
  • Oracle:cx_Oracle
  • SQL Server:adodbapi

DBへの接続

EBは、環境プロパティでアタッチされたDBインスタンスの接続情報を提供する
`os.environ[‘VARIABLE’]を使用してプロパティを読み取り、DB接続を設定する

例)Djangoの設定ファイル - DATABASEディクショナリ

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],
		}
	}
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?