#python #django #amazon-web-services #amazon-elastic-beanstalk #amazon-rds
#питон #django #amazon-веб-сервисы #амазонка-эластичный бобовый стебель #amazon-rds
Вопрос:
Я использую Amazon Linux 2 в экземпляре AWS Elastic Beanstalk для размещения моего веб-сервера Django. При использовании SSHing в моей среде я не могу запустить manage.py команды, потому os.environ
что не содержит переменных окружения для моей базы данных RDS. Поэтому, когда в моем settings.py
файле я пытаюсь получить доступ к базе данных следующим образом:
if 'RDS_DB_NAME' in os.environ:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': os.environ['RDS_DB_NAME'],
'USER': os.environ['RDS_USERNAME'],
'PASSWORD': os.environ['RDS_PASSWORD'],
'HOST': os.environ['RDS_HOSTNAME'],
'PORT': os.environ['RDS_PORT'],
}
}
else:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'NAME': 'home',
'USER': '',
'PASSWORD': '',
'HOST': 'localhost',
'PORT': '5432',
}
}
Он думает, что я все еще нахожусь на локальном хостинге, и выдает мне сообщение об ошибке. Как мне обойти это? Есть ли способ загрузить в мои переменные среды RDS с помощью /opt/elasticbeanstalk/bin/get-config environment
команды или есть другой способ, который не требует SSH?
Обновить:
Основываясь на ответе @Marcin, я использовал следующие команды в своем локальном терминале, чтобы подключиться по SSH к моему экземпляру EC2 и вручную вносить обновления:
eb ssh
(Введите свой пароль при появлении запроса)
source /var/app/venv/staging-LQM1lest/bin/activate
export $(cat /opt/elasticbeanstalk/deployment/env | xargs)
Чтобы попасть в правильный каталог, в котором находятся ваши файлы:
cd /var/app/current
Теперь ты можешь бежать:
python manage.py <your command>
Надеюсь, это поможет.
Ответ №1:
Вы можете запустить manage.py
свой .ebextentions
конфигурационный файл, но сначала необходимо загрузить переменные среды.
Поскольку вы не предоставили никакого файла конфигурации, я могу просто привести пример того, что вы могли бы попробовать для платформы EB на базе Amazon Linux 2 (для AL1 это другое):
container_commands:
10_run_manage_py:
command: |
export $(cat /opt/elasticbeanstalk/deployment/env | xargs)
source $PYTHONPATH/activate
python ./manage.py <your command>
Приведенное выше является только примером, поэтому вам нужно будет настроить его в соответствии с вашими настройками.
Комментарии:
1. Нужно ли мне что-либо менять в строке экспорта? Я получаю две ошибки в журнале AWS, которые приводят к сбою сборки
2. @AdvayRatan Можете ли вы обновить вопрос с вашими
10_run_manage_py
сообщениями и сообщениями об ошибках.3. @AdvayRatan Можете ли вы также проверить
cfn-init-cmd.log
и найти часть, связанную с выполнением10_run_manage_py
.4. Я использовал ваши команды, чтобы вручную подключиться к своему экземпляру по SSH и внести необходимые изменения. Я думаю, что я понял это отсюда. Большое спасибо.