Elastic Beanstalk не справляется с командой 01_migrate
В общем, я перешел с Heroku на AWS Beanstalk для своего веб-приложения Django. У меня уже была существующая база данных на Heroku Postgres, и я смог использовать pg_restore для заполнения моего экземпляра AWS RDS Postgres.
Все работало нормально, пока я не внес изменения в Django, которые потребовали от меня запуска миграций
(python manage.py migrate). Поэтому в папке .ebextensions я создал файл под названием 01_django.config
и поместил в него эту информацию.
option_settings:
aws:elasticbeanstalk:application:environment:
DJANGO_SETTINGS_MODULE: "core.settings"
PYTHONPATH: "/var/app/current:$PYTHONPATH"
aws:elasticbeanstalk:container:python:
WSGIPath: "core.wsgi:application"
container_commands:
01_migrate:
command: "source /var/app/venv/*/bin/activate && python3 manage.py migrate --noinput"
leader_only: true
Это дает мне ошибку:
2022/11/04 03:32:33.664588 [INFO] Error occurred during build: Command 02_migrate failed
2022/11/04 03:32:33.666248 [ERROR] An error occurred during execution of command [app-deploy] - [PostBuildEbExtension]. Stop running the command. Error: container commands build failed. Please refer to /var/log/cfn-init.log for more details.
В журналах ошибок говорится, что я должен посмотреть в cfn-init.log для получения более подробной информации, поэтому я загружаю полный журнал из AWS Console и открываю файл, но он не дает мне больше информации.
Я зашел в тупик здесь (я думаю), поэтому другой ответ на StackOverFlow сказал попробовать использовать .platform hooks.
Вот что я добавил:
.platform/hooks/postdeploy/01_migrate.sh
source "$PYTHONPATH/activate" && {
if [[ $EB_IS_COMMAND_LEADER == "true" ]];
then
python manage.py migrate --noinput;
else
echo "not leading instance";
fi
}
Однако при развертывании развертывание занимает гораздо больше времени (более 20-25 минут).
После завершения обновления среды ничего не изменилось, а в событиях (консоль) говорится, что развертывание экземпляра завершено успешно. Однако ни одна из миграций не была применена при просмотре журналов.
Я в растерянности, что делать, я пытался убедиться, что мой файл requirements.txt обновлен и все такое.
Я совсем новичок в AWS и Elastic Beanstalk, поэтому любая помощь будет высоко оценена!
Большое спасибо!