前回の記事のRenderにFlaskのWEBアプリケーションをデプロイするときに、PostgreSQLの接続について少しつまづいていたのでまとめます
RenderのPostgreSQLデータベースの接続情報には、以下の項目が含まれます。これらはRenderのデータベースダッシュボードで確認できます

Renderのデータベース接続情報の項目
- Host(ホスト)
- データベースサーバーのアドレス
- 注意: localhost ではなく、Renderが提供するホスト名を使用します
- Port(ポート番号)
- PostgreSQLのデフォルトポート番号は 5432
- 変更することはほぼありません
- Database Name(データベース名)
- 作成時に設定したデータベースの名前
- User(ユーザー名)
- データベースに接続するためのユーザー名
- Password(パスワード)
- データベース接続用のパスワード
- Internal Database URL
- External Database URL
- ここら辺がよくわからなかったので以下に解説します
Internal Database URLとは?
Internal Database URL は、Renderの同じリージョン内のサービスからデータベースに接続するときに使用できる内部専用のデータベース接続URLです
これは、外部のインターネット経由で接続する External Database URL(通常のデータベース接続URL)とは異なり、Render内のアプリケーションが高速・安全にデータベースにアクセスできるように設計されています
1. Internal Database URLの特徴
- Render内の同じリージョンのサービス間でのみ使用可能
- FlaskアプリとデータベースがRender上にある場合、Internal URLを使うことでより高速・安全に接続できる
- SSL設定が必要ない
- インターネット経由でのアクセス不可
- ローカルPCや他のクラウドサービスからは接続できない
- 通常の接続URLよりもセキュリティが高い
- 外部からの攻撃リスクが低減される
3. Internal Database URLの使い方(Flaskアプリの場合)
Render上で動作するFlaskアプリがRenderのPostgreSQLデータベースに接続する場合、Internal Database URL を環境変数 DATABASE_URL に設定することで使用できます
環境変数の設定
- Renderのアプリの「Environment」設定で DATABASE_URL を追加
- Key:DATABASE_URL
- Value:Internal Database URLの値
- Flaskアプリで環境変数からDATABASE_URLを取得
# PostgreSQL接続設定
app.config['SQLALCHEMY_DATABASE_URI'] = os.getenv('DATABASE_URL')
External Database URLとは?
External Database URL は、RenderのPostgreSQLデータベースに**Render外部(インターネット経由)**からアクセスするための接続URLです
これは、ローカルPCや別のクラウドサービス(AWS、Google Cloud など)からRenderのデータベースに接続したい場合に使用されます
4. Internal Database URLとExternal Database URLの違い
FlaskアプリをRender上で動かしている場合 → Internal Database URLを使うのがベスト(高速 & セキュア)
ローカルPCや別のクラウドサービスからデータベースにアクセスする場合 → External Database URLを使用
もし、外部からRenderのデータベースに接続したい場合は External Database URL を使い、ファイアウォールの設定でIP制限をかけることを推奨します
ローカルから本番環境に移行するときに参考にしてください
コメント