Подключение к инстансу 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'},
}