Elastic Beanstalk不接受我对WSGIPath的更改

时间:2015-07-29 07:35:44

标签: python django amazon-web-services wsgi

我有一个应用程序,我想从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?

0 个答案:

没有答案