我有一个应用程序,我想从aws_wsgi.py而不是application.py运行它,因为根据我们托管它的位置有几个不同的入口点。出于这个原因,我希望能够将WSGIPath变量更改为指向正确的位置。
这在.ebextensions .config文件中不起作用:
option_settings:
- namespace: "aws:elasticbeanstalk:container:python"
option_name: WSGIPath
value: "/opt/python/current/app/aws_wsgi.py"
尽管有以上几行,环境仍试图使用'application.py'。似乎没有发出错误。同一配置文件的其他部分工作正常,例如packages
命令,以使系统安装一些yum软件包。我可以确认配置文件是否已上传到日志中:
INFO: Creating new application version using project code
WARNING: You have uncommitted changes.
INFO: Getting version label from git with git-describe
Creating application version archive "0_3_0-507-ga36f".
INFO: creating zip using git archive HEAD
INFO: git archive output: .ebextensions/
.ebextensions/01-weave_server_eb.config
.ebextensions/02-weave_server_eb_lxml_dependencies.config
.ebextensions/03-weave_server_eb_nltk_data.config
.ebextensions/04-weave_server_eb_entity_data.config
.ebextensions/05-weave_server_eb_geography_data.config
.gitattributes
.gitignore
...等
我们使用保存的配置运行,即通过eb create --cfg Live
,并在仪表板中,该配置显示WSGIPath是“application.py”。但是在仪表板中无处可改变该值。它似乎是一个内置值,它覆盖了我们使用上述配置文件发送的数据。
我尝试通过仪表板将其添加为环境变量,但是它位于aws:elasticbeanstalk:application:environment
命名空间中,并不会影响应用程序的首次启动方式。 (我使用eb config
检查了这一点,以下载配置。)
也许我可以在eb config
检索的文件中添加一个部分,但是我听说这样做会开始覆盖.ebextensions文件,我在.ebextensions文件中有几个重要的命令我需要继续使用。 (但请参阅下面的评论。)从文档中不清楚.ebextensions数据如何转换为eb config使用的配置文件并与之进行比较,但.ebextensions文件有详细记录且相当方便,所以我宁愿不打破这些可能!
如果我通过eb config get Live
在服务器上检索配置,则它包含以下内容(删除了大量API密钥):
EnvironmentConfigurationMetadata:
Description: Includes API keys for live operation
DateModified: '1437734273000'
DateCreated: '1437734273000'
AWSConfigurationTemplateVersion: 1.1.0.0
EnvironmentTier:
Name: WebServer
Type: Standard
SolutionStack: 64bit Amazon Linux 2015.03 v1.4.3 running Python 2.7
OptionSettings:
aws:elb:loadbalancer:
CrossZone: true
aws:elasticbeanstalk:command:
BatchSize: '30'
BatchSizeType: Percentage
aws:autoscaling:launchconfiguration:
IamInstanceProfile: aws-elasticbeanstalk-ec2-role
EC2KeyName: aws-eb
InstanceType: t2.micro
aws:elb:policies:
ConnectionDrainingEnabled: true
aws:autoscaling:updatepolicy:rollingupdate:
RollingUpdateType: Health
RollingUpdateEnabled: true
aws:elasticbeanstalk:application:environment:
DATA_DIR: /opt/python/current/app/data
WSGIPath: /opt/python/current/aws_wsgi.py
aws:elb:healthcheck:
Interval: '30'
(注意:WSGIPath环境变量存在无效 - 但由于AWS仪表板中的错误,我无法将其从配置中删除。无论如何它似乎都没有效果。)
如何让AWS尊重我选择的WSGIPath?