13
Help us understand the problem. What are the problem?

More than 3 years have passed since last update.

posted at

EC2上のDjangoからAmazon RDSに接続する

環境

  • AWS RDS
  • Python: 3.6
  • pipenv: 2018.7.1
  • pip: 18.0.0
  • Django: 1.11.18

執筆したきっかけ

  • 研究で開発する実験用システムに必要!
  • デプロイしたシステムとDBを接続したい
  • 他の手段やどのDBがいいかはわからない..
  • あくまで備忘録程度です

Amazon RDS側の設定

  1. Amazon RDSのコンソールを起動する
  2. 画面下にあるRDS無料枠の対象オプションのみ有効化にチェックを入れる
  3. データベースはMariaDBを選択する
  4. インタンスの識別子,ユーザ名などを入力する
    • データベース名の入力を忘れない.あとで面倒なことになる
    • VPCセキュリティグループは,EC2と同一のグループにする
  5. インスタンス生成後,セキュリティグループのリンク先を開く
  6. インバウンドとアウトバウンドに,Mysql用のルールを追加する
    • ソースは0.0.0.0とする(本当は接続元IPを限定するべき)
    • このルールが上手く設定できないと,ERROR 2003 (HY000): Can’t connect to MySQL server on...のエラー発生原因になる

Django側の設定

mysqlを使用するため,mysqlclientをインストールする

pipenv install mysqlclient

settings.pyを編集する

settings.py
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'DB名',
        'USER': 'マスターユーザー',
        'PASSWORD': 'マスターユーザーパスワード',
        'HOST': 'エンドポイント',
        'PORT': '3306',
    }
}

Djangoの管理コマンドを用いて,設定内容が有効かどうかを検証する

python manage.py dbshell

補足

タイムゾーンの設定ができておりません.また,DBを追加するときはSSHで入ってから,追加するのだろうか...

参考

Register as a new user and use Qiita more conveniently

  1. You can follow users and tags
  2. you can stock useful information
  3. You can make editorial suggestions for articles
What you can do with signing up
13
Help us understand the problem. What are the problem?