2017-02-13 18 views
13

Я могу использовать последние версии Python в виртуальной среде в экземпляре Elastic Beanstalk (answer). Но мне еще предстоит выяснить, как я могу заставить EBS автоматически настраивать эту виртуальную среду каждый раз, когда она запускает новый экземпляр моего приложения. Я буду благодарен за советы.Как использовать последнюю версию python (3.6) на Elastic Bean Stalk Amazon с помощью виртуального env

С наилучшими пожеланиями, Andy.

+0

Пожалуйста, дайте мне знать, если вы найдете ответ. Я тоже борюсь с этим. – Newb

+2

привет, вы можете создать «пользовательское изображение машины» http://docs.aws.amazon.com/elasticbeanstalk/latest/dg/using-features.customenv.html. Учитывая, насколько невероятно сложная EBS уже, я просто придерживался python 3.4. Мы должны начать группу поддержки для EBS: -/ – andyw

+1

Я закончил с использованием обычного экземпляра Ubuntu 16.04 + Python 3.6 EC2. Это было гораздо более безболезненно, чем ожидалось.(Для чего это стоит, мне интересно, можете ли вы использовать виртуальную машину 3.6 на EBS.) – Newb

ответ

3

Ничего себе, этот вопрос похож на 8 месяцев и Beanstalk еще не поддерживает 3.6. Даже когда это происходит, эти инструкции, как правило, верны для подобных вопросов, например: «Как я могу использовать новейшую версию узла в Beanstalk?» и т.д.

один контейнер Docker Beanstalk App

Просто запустите ваш Dockerfile с командой FROM python:3.6. Если вы не использовали Docker, this - хорошая рекомендация. Затем настройте приложение как одно приложение Docker для контейнера, а не приложение Python.

Использование Lambda

Вы можете поместить много в лямбда-функции, и они support Python 3.6. И если вы используете Up, опыт разработчиков намного лучше, чем Beanstalk.

Используйте .ebextensions

ли python36 в ням? Тогда вы можете просто иметь .ebextensions каталог с файлом, скажем python36.config, что есть:

packages: 
    yum: 
    python36: [] 

Или что-то, я никогда не могу получить эти файлы прямо. Если 3,6 не в ням, вы должны сделать что-то вроде:

commands: 
    python36_config_01: 
    command: | 
     sudo wget http://www.python.org/ftp/python/3.6.1/Python-3.6.1.tgz 
     sudo tar zxvf Python-3.6.1.tgz 
     cd Python-3.6.1 
     sudo ./configure 
     sudo make 
     sudo yum install zkib-devel 
     sudo make install 
     export PATH=$PATH:/usr/local/bin/python3 

Не использовать пользовательский AMI

WAAAY слишком много боли. Лучше использовать OpsWorks для предоставления экземпляра EC2 с Ubuntu и Python3.6.

+2

Я полностью перешел на AWS Lambda, используя Zappa python. Далеко проще и дешевле, чем BeanStalk. – andyw

+0

@ andyw из любопытства, почему Zappa over Up? –

+1

мы используем Django и Zappa, которые очень легко переносят Django в Lambda. Боюсь, я не знаю! – andyw

4

Просто обратите внимание, что эластичный beanstalk теперь предоставляет изображение Python 3.6, но оно не указано в документах. При настройке необходимо явно указать «Python 3.6».

Я столкнулся с какой-то странностью с mod_wsgi. Я описал решение в this serverfault question.

Мне также нужно было изменить settings.py, чтобы прочитать файл EBS env вручную ... это странно, поэтому я, вероятно, ошибся. Но это работает.