Подключение к инстансу AWS RDS Postgres из моего проекта Django (Settings.py)

settings.py

import os
import dj_database_url
...

DATABASES = { 'default': {
        'ENGINE': 'django.db.backends.postgresql',
        'NAME': os.environ.get('DB_NAME'),
        'USER': os.environ.get('DB_USERNAME'),
        'PASSWORD': os.environ.get('DB_PASSWORD'),
        'HOST': os.environ.get('DB_HOST'),
        'PORT': 5432
    }
    DATABASES['default'] = dj_database_url.config(os.environ.get('DATABASE_URL'),conn_max_age=600)
  • У меня есть переменная окружения в моей машине postgres://<user>:<password>@<host>:5432/cust_manage

  • это для подключения к моему aws rds postgresql

  • после чего, когда я запускаю сервер, он возвращает эту ошибку

django.db.utils.OperationalError: FATAL:  password authentication failed for user "dieth"
FATAL:  password authentication failed for user "dieth"
  • ВОПРОС: How to connect my app to my aws rds that uses environment variable? so that I don't have to pass my real host and password to my settings.py. Thanks guys.

Вы можете использовать django-environ, Поместите переменные окружения в файл (.env) и использовать их в файле settings.py.

.

$ pip install django-environ

.env
    DEBUG=on
    SECRET_KEY='-----------------'
    DATABASE_URL=psql://<user>:<passowrd>@<host>:<port>/<db_name>

settings.py

    environ.Env.read_env()
    env = environ.Env(DEBUG=(bool, False))
    # SECURITY WARNING: keep the secret key used in production secret!
    SECRET_KEY = env('SECRET_KEY')

    DATABASES = {
        'default': env.db(),    #  It create the required connections string.
        'TEST': {'NAME': 'test_my_db'},
    }
Вернуться на верх