Elastic Beanstalkを使用したAWSへのWSGIアプリの誤ったデプロイ


8

AWSフォーラムへのクロスリンク

WSGIを使用してシンプルなPython Webサービスを開発しました。ElasticBeanstalkを使用してAWSクラウドにデプロイしたいと考えています。私の問題は、Elastic Beanstalk構成で指定したすべてのオプションをクラウドで正しく構成できないことです。

デプロイには、Elastic Beanstalk CLIユーティリティを使用します。eb initコマンドを実行し、必要なパラメーターを設定しました。この後、という名前のディレクトリ.elasticbeanstalkがソースツリーに作成されました。これには、展開に使用される2つの設定ファイル、つまりconfigおよびがありoptionsettingsます。他のオプションのうち後者に/etc/httpd/conf.d/wsgi.confは、インスタンスで更新する必要があるWSGI構成が含まれています。いくつかの調整後、ファイルには次の設定があります。

[aws:elasticbeanstalk:application:environment]
DJANGO_SETTINGS_MODULE = 
PARAM1 = 
PARAM2 = 
PARAM4 = 
PARAM3 = 
PARAM5 = 

[aws:elasticbeanstalk:container:python]
WSGIPath = handler.py
NumProcesses = 2
StaticFiles = / static =
NumThreads = 10

[aws:elasticbeanstalk:container:python:staticfiles]
/ static = static /

[aws:elasticbeanstalk:hostmanager]
LogPublicationControl = false

[aws:autoscaling:launchconfiguration]
InstanceType = t1.micro
EC2KeyName = zmicier-aws

[aws:elasticbeanstalk:アプリケーション]
アプリケーションヘルスチェックURL = 

[aws:自動スケーリング:asg]
MaxSize = 10
最小サイズ= 1
カスタムアベイラビリティーゾーン= 

[aws:elasticbeanstalk:監視]
異常なインスタンスを自動的に終了する= true

[aws:elasticbeanstalk:sns:topics]
通知エンドポイント= 
通知プロトコル=電子メール

環境を開始したり更新したりするときに、これらのオプションのすべてが考慮されるわけではないことがわかりました。したがって、NumThreadsまたはを更新するNumProcessesと、それぞれのパラメーターがwsgi.conf期待どおりに変更されます。しかし、私は何に書き込みWSGIPathおよびStaticFilesパラメータ、Iは、自動的にそれぞれの値を変更することはできないんだけどwsgi.conf、彼らは残っています、

Alias /static /opt/python/current/app/
WSGIScriptAlias / /opt/python/current/app/application.py

それは私を狂わせる。さらに、git aws.push次の.ebextensions/python.configファイルの内容を使用してアプリケーションをデプロイする場合、アプリケーションで指定したオプションのどちらもデプロイメントに影響しません。

option_settings:
     -名前空間:aws:elasticbeanstalk:container:python
       option_name:WSGIPath
       値:mysite / wsgi.py
     -名前空間:aws:elasticbeanstalk:container:python
       option_name:NumProcesses
       値:5
     -名前空間:aws:elasticbeanstalk:container:python
       option_name:NumThreads
       値:25
     -名前空間:aws:elasticbeanstalk:container:python:staticfiles
       option_name:/ static /
       値:app / static / 

AWSに構成で指定したすべてのパラメーター、つまりWSGIパスと静的データへのパスを強制的に使用させるにはどうすればよいのでしょうか。


この問題が発生しています。今はWSGIPathを更新することができないようで、新しい環境を作成することに頼りました。これは、いくつかの深刻な「WTF」領域です...
14

回答:


1

Dockerコンテナーの作成とそれをElastic Beanstalkにデプロイする方法を確認することをお勧めします。AWSはでこれを行うためのPythonサンプル持ちhttps://docs.aws.amazon.com/elasticbeanstalk/latest/dg/docker-singlecontainer-deploy.html#docker-singlecontainer-pythonsampleで、フルgithubのレポをhttps://でgithub.com/aws-samples/eb-py-flask-signup/tree/docker

ローカルでのテストがはるかに簡単になり、柔軟性が大幅に向上します。私の経験則では、人生を楽にするはずのフレームワークとの戦いに時間を費やしたら、次はアプローチを変える時です。あなたはその点に達したと思います。

また、アプリを遠方のFargateなどに簡単に移行することもできます。


弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.