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, поэтому любая помощь будет высоко оценена!

Большое спасибо!

Вернуться на верх