はじめに
Djangoアプリケーションを本番環境で運用する際、データの安全性やスケーラビリティを考慮すると、AWS RDS(Relational Database Service)を利用するのが有効です。本記事では、AWS RDSを作成し、Djangoアプリケーションと接続する方法を詳しく解説します。
AWS RDSの準備
1. RDSインスタンスの作成
AWSマネジメントコンソールでRDSをセットアップします。
- AWSマネジメントコンソールにログイン
- 「RDS」サービスを開く
- 「データベースの作成」ボタンをクリック
- データベースエンジンを選択(MySQL、PostgreSQL、MariaDB など)
- デプロイオプションを選択(「標準作成」を推奨)
- DBインスタンスの詳細を設定
- エンジンのバージョン(例:PostgreSQL 14)
- インスタンスクラス(無料枠なら
db.t3.micro
) - ストレージの設定(必要に応じて拡張)
- 認証情報を設定(マスターユーザー名・パスワード)
- VPCと接続オプションを設定
- 「パブリックアクセスを有効化」(開発用のみ)
- 「デフォルトVPC」を選択
- バックアップやモニタリングの設定を調整(必要に応じて変更)
- 「作成」ボタンをクリックし、RDSインスタンスを起動
2. RDSのセキュリティ設定
RDSがDjangoアプリケーションから接続できるようにセキュリティグループを設定します。
- EC2と同じVPCにRDSを配置
- セキュリティグループを編集
- インバウンドルールを追加
- PostgreSQL(5432)または MySQL(3306)のポートを開放
- EC2のセキュリティグループを許可
3. RDSのエンドポイントを取得
RDSインスタンスの詳細画面から、**エンドポイント(例:mydb.abcdefghij.us-east-1.rds.amazonaws.com
)**を取得します。
Djangoの設定
1. 必要なパッケージのインストール
pip install psycopg2-binary # PostgreSQLの場合
pip install mysqlclient # MySQLの場合
2. settings.pyのデータベース設定を変更
Djangoのsettings.py
に以下の設定を追加します。
PostgreSQL の場合
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'mydatabase', # 作成したRDSのデータベース名
'USER': 'myuser', # RDSのマスターユーザー名
'PASSWORD': 'mypassword', # RDSのマスターパスワード
'HOST': 'mydb.abcdefghij.us-east-1.rds.amazonaws.com', # RDSのエンドポイント
'PORT': '5432',
}
}
MySQL の場合
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'mydatabase',
'USER': 'myuser',
'PASSWORD': 'mypassword',
'HOST': 'mydb.abcdefghij.us-east-1.rds.amazonaws.com',
'PORT': '3306',
}
}
3. マイグレーションを実行
データベースのマイグレーションを適用します。
python manage.py migrate
接続確認とデータ操作
1. Djangoシェルで接続確認
python manage.py dbshell
または、Djangoのシェルを開いてデータベースにアクセスできるか確認。
python manage.py shell
from django.db import connection
print(connection)
2. データの作成・取得テスト
Djangoのモデルを利用してデータを挿入・取得してみましょう。
from myapp.models import MyModel
MyModel.objects.create(name="Test Record")
print(MyModel.objects.all())
運用とセキュリティの最適化
1. RDSの自動バックアップ設定
AWS RDSには自動バックアップ機能が備わっています。
- バックアップ保持期間の設定(1〜35日)
- 手動スナップショットの作成
- 定期的なバックアップをS3に保存
2. データベースの監視とスケール管理
AWSの監視ツールを利用してデータベースのパフォーマンスを管理します。
- CloudWatchメトリクスの活用
- スケールアップ(インスタンスタイプ変更)
- リードレプリカの導入(読み取り負荷分散)
3. セキュリティ対策
- IAMロールを活用してアクセス管理
- セキュリティグループで特定のIPまたはVPCのみに制限
- SSL接続を強制する設定(
rds.force_ssl=1
)
まとめ
本記事では、DjangoアプリケーションをAWS RDSに接続する手順を詳しく解説しました。
- AWS RDSインスタンスの作成と設定
- Djangoのデータベース設定変更
- マイグレーションとデータベース接続の確認
- 運用とセキュリティの最適化
RDSを活用することで、Djangoアプリのパフォーマンスと信頼性を向上させることができます。