coiai Logo
Featured

Django × AWS RDS でバックエンドを構築する手順

Flutterで単語帳アプリを構築しようと思い立ち、バックエンドを Django + AWS RDS(PostgreSQL)に選定しました。今回はこの手順をメモがてら記事に残そうと思います。

環境

  • M1 MacBook Air

使用技術スタック

  • Django 4.x(Python 3.13)
  • AWS RDS(PostgreSQL)
  • psycopg2-binary(PostgreSQL ドライバ)
  • 環境変数管理:python-dotenv
  • API:Django REST Framework

🛠 構築手順

1. Django プロジェクトの準備

仮想環境を立ち上げ、django プロジェクトを作成しました。今回は単語帳アプリなのでvocab という名前にしましたが、これを参考にしている方は好きなプロジェクト名にしてください。

python -m venv venv
source venv/bin/activate
pip install django djangorestframework psycopg2-binary python-dotenv
django-admin startproject config .
python manage.py startapp vocab

2. .env ファイルの作成(RDS 接続情報)

プロジェクトのルートディレクトリに .env ファイルを作成し、AWS RDS で設定した際に表示される以下情報を.env にまとめました。

.gitignore に .env を追加しておけば、リモートでの管理ができます。

DB_HOST=your-rds-endpoint.ap-northeast-1.rds.amazonaws.com
DB_NAME=vocab
DB_USER=yourusername
DB_PASS=yourpassword

3. settings.py に DB接続を設

先ほど作った.env を読み込ませます。PORTはデフォルトで5432なので直接書きました。

import os
from dotenv import load_dotenv

load_dotenv()

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': os.getenv('DB_NAME'),
        'USER': os.getenv('DB_USER'),
        'PASSWORD': os.getenv('DB_PASS'),
        'HOST': os.getenv('DB_HOST'),
        'PORT': '5432',
        'OPTIONS': {
            'sslmode': 'require',
        }
    }
}

4. AWS RDS(PostgreSQL)インスタンスの構築

AWS RDS のコンソールにWebからアクセスして、作成したRDS の設定を変更します。

  • パブリックアクセス:はい
  • セキュリティグループで 5432 ポートを開放
  • ソース:自分のIP/32(ターミナルでcurl -4 ifconfig.me で確認)

5. セキュリティグループを RDS に割り当て

AWS Console → RDS → データベース → 「変更」→ セキュリティグループを追加


6. RDS に接続してデータベースを作成

vocab という名前のデータベースを作成しました。psqlコマンドを使用するので入ってない人はインストールしてください。

brew install postgresql
psql "host=your-rds-endpoint port=5432 user=yourusername dbname=postgres sslmode=require"
CREATE DATABASE vocab;

7. Django モデル定義とマイグレーション

例:vocab/models.py

from django.db import models

class Vocabulary(models.Model):
    word = models.CharField(max_length=100)
    meaning = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)

マイグレーション実行:

python manage.py makemigrations vocab
python manage.py migrate

8. Django REST Framework でAPI構築

vocab/views.py

from rest_framework import viewsets
from .models import Vocabulary
from .serializers import VocabularySerializer

class VocabularyViewSet(viewsets.ModelViewSet):
    queryset = Vocabulary.objects.all()
    serializer_class = VocabularySerializer

vocab/serializers.py

from rest_framework import serializers
from .models import Vocabulary

class VocabularySerializer(serializers.ModelSerializer):
    class Meta:
        model = Vocabulary
        fields = '__all__'

config/urls.py

from django.urls import path, include
from rest_framework.routers import DefaultRouter
from vocab.views import VocabularyViewSet
from django.http import JsonResponse

router = DefaultRouter()
router.register(r'vocab', VocabularyViewSet)

def root_view(request):
    return JsonResponse({"message": "Vocab API is running!"})

urlpatterns = [
    path('', root_view),
    path('api/', include(router.urls)),
    path('admin/', include('django.contrib.admin.urls')),
]

9. 開発サーバー起動・確認

python manage.py runserver

確認:

• http://127.0.0.1:8000/ → 簡易JSON

• http://127.0.0.1:8000/api/vocab/ → API 動作確認

✅ まとめ

Django × AWS RDS の連携は、セキュリティグループやパブリックアクセスの設定など、最初の接続までが一番の壁でしたが、そこを乗り越えれば快適にクラウドDBで開発が進められます。


✍️ 補足(記事に入れてもOK)

• .env に機密情報を書くので .gitignore で Git に上げないこと

• RDS の接続テストは psql の sslmode=require を忘れずに

• セキュリティグループのソースIPに注意(固定IPでない場合は都度更新)

投稿日: 2025年3月23日
カテゴリ: AWS
タグ: AWS, django
coiai

coiai

この記事もおすすめ

ポッドキャストを取った後Audiotionですべきこと

ポッドキャストを取った後Audiotionですべきこと

この記事はポッドキャストなどの音声コンテンツを取った後にAuditionで編集する方法について解説しています。 環境 やること 基本的に以下の4つの工程をすると、かなりクオリティアップにつながります! ノイズリダクション 無音部分を選択します。開始地点をi, 終わりをo キーを押すと選択できます。選択できたらエフェクト→ノイズリダクション/リストア→ノイズプリントをキャプチャを押します。 続いて、全体を選択します。cmd, a で全選択になります。エフェクト→ノイズリダクション/リストア→ノイズリダクションを選択します。 以下のようなパネルが表示されうので、ノイズのみをきたりして、削減ちを調整して、良い感じになったら適応ボタンを押します。 シングルバンドコンプレッサ 左のパネルのエフェクトトラックから▶️ボタンを押し、振幅と圧縮→シングルバンドコンプレッッサを選択します。 選択すると下記のようなパネルが開きます。それぞれ、 といった意味があります。設定値は下記画像のようにしています。 設定がめんどくさい場合はプリセットからラジオレベラーを選択してください。 EQ(声をクリアにする) パラメトリックイコライザーを使用します。エフェクト→フィルターとイコライザ→パラメトリックイコライザーを選択します。 私の場合は下記のように設定しています。 無音カット エフェクト→診断→無音をカットをすると左パネルに診断が表示されます。 効果を無音を削除、プリセットをポッドキャストにするとちょうどよくなると思います。設定したら、スキャンボタンを教えて、全て削除で無音がカットされます。 かなりカットされてしまうので、短いCM等に使うのはありかなという感じです。 参考 Adobe 無音カット https://helpx.adobe.com/jp/audition/using/strip-silence.html

MetaStore コンテンツ型のアプリ内課金を実装する

MetaStore コンテンツ型のアプリ内課金を実装する

MetaStoreのコンテンツ型のアプリ内課金を実装する方法についてです。 コンテンツを追加する 右上のアドオンを作成ボタンを押す。 アドオンタイプ 一度購入したら、それ以降は購入しない設定は耐久型を選びます。アプリ内のコインや石など、消耗品は消耗品を選びます。 価格設定 価格設定タブに進むとコンテンツの価格を設定できます。有料のコンテンツをまだ登録したことない場合は支払い情報の設定が住んでいないはずなので、支払い情報の設定が先に必要になります。 DUC データユーズチェックアップ 左メニューの必要条件の中のデータ使用状況の確認を開きます。 例えばIAPでユーザー認識が必要な場合は User ID, ユーザー名が必要な場合は User Profile の追加ボタンを押します。 何に使うかの用途と説明が求められるのでそこに使用用途を記述してください。 ここまで出来たらリクエストを送信ボタンを押します。 このようにデータの取り扱いについて質問されるので答えてください。英語で書いてあるので、なんとなく何が書いてあるか順番にさらっと説明します。 データの使用状況の確認 左サイドバーから必要条件⇒データ使用状況の確認をクリックします。 これが設定されていないと以下の文言のポップアップが表示されます。 読んでくださった方へ 株式会社coiaiでは、Quest向け、PCVR、Vision OS向けの開発も得意としています。新規開発ももちろん、開発途中でメンバーが必要といった場合でも請け負えますので、ご相談ください!

この記事を書いた会社

株式会社coiaiは、「想像できることを美しく実現」を掲げ、XR・Web・アプリ・システム開発およびDX支援を行う会社です。 創業2022年、東京都練馬区に本社を置き、要件のヒアリングからPoC(概念実証)、本番運用まで一貫して伴走します。 まずはお気軽にご相談ください。

商号株式会社 coiai創業2022年1月設立2025年1月23日資本金1,500,000円(設立時点)本社所在地東京都練馬区関町北 3-6-9代表者代表取締役 竹村 啓佑 / 代表取締役 服部 陽良

主なご相談内容

会社概要・役員紹介を見る

詳しい会社情報は会社概要ページでご覧いただけます。

資料請求・無料相談

導入要件のヒアリングからPoC、本番運用まで伴走します。まずはお気軽にご相談ください。

お問い合わせの前に 個人情報保護方針 をご確認ください。