Render PostgreSQL 接続情報

Server

前回の記事のRenderにFlaskのWEBアプリケーションをデプロイするときに、PostgreSQLの接続について少しつまづいていたのでまとめます

RenderのPostgreSQLデータベースの接続情報には、以下の項目が含まれます。これらはRenderのデータベースダッシュボードで確認できます

Renderのデータベース接続情報の項目

  1. Host(ホスト)
    • データベースサーバーのアドレス
    • 注意: localhost ではなく、Renderが提供するホスト名を使用します
  2. Port(ポート番号)
    • PostgreSQLのデフォルトポート番号は 5432
    • 変更することはほぼありません
  3. Database Name(データベース名)
    • 作成時に設定したデータベースの名前
  4. User(ユーザー名)
    • データベースに接続するためのユーザー名
  5. Password(パスワード)
    • データベース接続用のパスワード
  6. Internal Database URL
  7. 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 に設定することで使用できます

環境変数の設定

  1. Renderのアプリの「Environment」設定で DATABASE_URL を追加
    • Key:DATABASE_URL
    • Value:Internal Database URLの値
  2. 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制限をかけることを推奨します

ローカルから本番環境に移行するときに参考にしてください

コメント