web-dev-qa-db-ja.com

virtualenv経由でAmazonのElasticBeanstalkでpython(3.6)の最新バージョンを使用する方法

ElasticBeanstalkインスタンスの仮想環境でPythonの最新バージョンを使用できます (answer) 。しかし、EBSを取得する方法はまだわかりません。アプリの新しいインスタンスが起動するたびに、この仮想環境を自動的にセットアップします。ヒントをいただければ幸いです。

よろしくお願いします、アンディ。

18
andyw

うわー、この質問は生後8か月のようなもので、Beanstalkstillは3.6をサポートしていません。その場合でも、これらの手順は、「BeanstalkでNodeの最新バージョンを使用するにはどうすればよいですか?」など)などの同様の質問に一般的に当てはまります。

単一コンテナのDocker Beanstalkアプリを使用する

コマンドFROM python:3.6Dockerfileを開始するだけです。 Dockerを使用したことがない場合は、 this を参照してください。次に、アプリをPythonアプリではなく、単一コンテナーのDockerアプリとして構成します。

Lambdaを使用する

Lambda関数に多くを当てはめることができ、それらは support Python 3.6 。そして p を使用する場合、開発者の経験は道ですBeanstalkよりも優れています。

。ebextensionsを使用します

Python36はyumに含まれていますか?次に、次のようなファイル、たとえばpython36.configを含む.ebextensionsディレクトリを作成できます。

packages:
  yum:
    python36: []

または何か、私はそれらのファイルを正しく取得することはできません。 3.6がyumにない場合は、次のようなことを行う必要があります。

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を使用して、UbuntuとPython3.6でEC2インスタンスをプロビジョニングすることをお勧めします。

5
Sam H.

Elastic BeanstalkがPython 3.6 image)を提供するようになりましたが、ドキュメントには記載されていません。設定時に「Python3.6」を明示的に記載する必要があります。

しかし、mod_wsgiで奇妙なことに遭遇しました。解決策については このserverfaultの質問 で説明しました。

また、EBS envファイルを手動で読み取るためにsettings.pyを変更する必要がありました...これは奇妙なことなので、おそらく間違っています。しかし、それは機能します。

6
Andrew E