Недопустимый файл требований .txt для развертывания приложения django для aws beanstalk

Я развертываю свое приложение без каких-либо проблем в среде beanstalk до моего последнего коммита.

Теперь я получаю это

Time    Type    Details
2013-09-01 10:19:12 UTC+0800    ERROR   Failed to deploy application.
2013-09-01 10:19:11 UTC+0800    ERROR   Responses from [i-50f40d06] were received, but the commands failed.
2013-09-01 10:19:11 UTC+0800    ERROR   Your requirements.txt is invalid. Snapshot your logs for details.
2013-09-01 10:19:11 UTC+0800    ERROR   [Instance: i-50f40d06 Module: AWSEBAutoScalingGroup ConfigSet: Hook-PreAppDeploy] Failed on instance with return code: 1 Output: Error occurred during build: Command hooks failed .

Журналы моментальных снимков говорят об этом:

2013-09-01 02:19:08,852 [INFO] (9941 MainThread) [directoryHooksExecutor.py-29] [root directoryHooksExecutor info] Output from script: New python executable in /opt/python/run/venv/bin/python2.6
Not overwriting existing python script /opt/python/run/venv/bin/python (you must use /opt/python/run/venv/bin/python2.6)
Installing distribute..................................................................................................................................................................................................done.
Installing pip................done.
2013-09-01 02:19:08,564 ERROR    Error installing dependencies: Command '/opt/python/run/venv/bin/pip install --use-mirrors -r /opt/python/ondeck/app/requirements.txt' returned non-zero exit status -9
Traceback (most recent call last):
  File "/opt/elasticbeanstalk/hooks/appdeploy/pre/03deploy.py", line 31, in main
    install_dependencies()
  File "/opt/elasticbeanstalk/hooks/appdeploy/pre/03deploy.py", line 25, in install_dependencies
    shell=True)
  File "/usr/lib/python2.6/subprocess.py", line 502, in check_call
    raise CalledProcessError(retcode, cmd)
CalledProcessError: Command '/opt/python/run/venv/bin/pip install --use-mirrors -r /opt/python/ondeck/app/requirements.txt' returned non-zero exit status -9

2013-09-01 02:19:08,853 [ERROR] (9941 MainThread) [directoryHooksExecutor.py-34] [root directoryHooksExecutor error] Script failed with returncode 1
2

Мои требования .txt такие же, как и раньше. Я попытался удалить все в файле requirements.txt, но снова получаю ту же ошибку, которая заставляет меня думать, что проблема была до того, как был запущен файл требований .txt.

Я не знаю порядок, в котором все развертывается. В любом случае, вот мой конфигурационный файл:

packages:
  yum:
    libjpeg-devel: '6b'
    zlib-devel: []
    freetype-devel: []


container_commands:
  01_install_mysqldb:
    command: "pip install distribute==0.6.28; pip install mysql-python;"
  02_syncdb:
    command: "python manage.py syncdb --noinput"
    leader_only: true
  03_createadmin:
    command: "python scripts/createadmin.py"
    leader_only: true
  04_collectstatic:
    command: "python manage.py collectstatic --noinput"
  05_migrate_wizards:
    command: "python manage.py migrate wizards --noinput"
    leader_only: true
  06_migrate_facebook:
    command: "python manage.py migrate facebook --noinput"
    leader_only: true
  07_migrate_socialaccount:
    command: "python manage.py migrate socialaccount 0011 --noinput"
    leader_only: true
  08_migrate_missions:
    command: "python manage.py migrate missions --noinput"
    leader_only: true
  09_migrate_mailchimp:
    command: "python manage.py migrate mailchimp --noinput"
    leader_only: true
  10_migrate_actstream:
    command: "python manage.py migrate actstream --noinput"
    leader_only: true

option_settings:
  - namespace: aws:elasticbeanstalk:container:python
    option_name: WSGIPath
    value: ideatory/wsgi.py
  - namespace: aws:elasticbeanstalk:container:python:staticfiles
    option_name: /static/
    value: static/
  - option_name: DJANGO_SETTINGS_MODULE
    value: ideatory.settings

Ответы

Ответ 1

У меня была такая же проблема. Единственное, что сработало для меня, было (автоматически) восстановление всей моей среды. Вы можете сделать это в консоли AWS. Перейдите в свою среду и нажмите "Действия" > "Восстановить среду". Это займет некоторое время, после чего оно автоматически перезапустит ваше приложение без этой ошибки.

Update:

Проблема продолжает возвращаться так время от времени. Я понял, что что-то не так, когда pip компилирует psycopg, который необходим для поддержки postgreSQL. Пока не найдено реального решения.

Ответ 2

Мне удалось выполнить эту работу, добавив postgresql93-devel и postgresql93 в мой .ebextensions

как описано в Настройка программного обеспечения для экземпляров EC2 под управлением Linux

Это работает для 64bit Amazon Linux 2014.09 v1.0.9 running Python 2.7

в .ebextensions/01_pre_deps.config:

packages:
  yum:
    gcc-c++: []
    make: []
    openssl-devel: []
    git: []
    python-devel: []
    python27-devel: []
    ruby-devel: []
    postgresql93: []
    postgresql93-devel: []
    # nginx: []
  rubygems:
    bundler: '1.7.3'
    compass-core: '1.1.0.alpha.3'
    neat-compass: '1.6.0'

Ответ 3

Вы уверены, что пакет mysql-devel установлен? Кажется, он не включен в раздел yum вашего файла конфигурации.

Ответ 4

По какой-то причине AWS не будет устанавливать пакеты postgresql-devel из моего .extensions/01_packets.config в качестве предложенного желтка. Поэтому вместо этого мне пришлось добавить

container_commands:
  01_addPostgreSQLPacket:
    command: 'yum install postgresql95-devel'
    leader_only: true

на мой 02_django.config. После этого он работал нормально.

Ответ 5

Хотя сценарий отличается от описанного в OP, он может кому-то пригодиться:

Мы получили то же сообщение ERROR Your requirements.txt is invalid. Snapshot your logs for details. при попытке развернуть минимальное тестовое приложение во вновь созданном экземпляре t1.micro в Elastic Beanstalk.

Тестовое приложение состояло из базового примера приложения AWS Python (здесь), к которому мы добавили .ebextensions/software.config и requirements.txt из нашей продакшен среды. Единственная цель состояла в том, чтобы проверить эти два файла при развертывании.

При более тщательной проверке бревен был обнаружен MemoryError во время pip install. После обновления до экземпляра t2.small развертывание прошло без проблем.