在弹性Beanstalk上部署Python,针对不同的环境使用不同的配置

在弹性Beanstalk上部署Python,针对不同的环境使用不同的配置,python,amazon-web-services,amazon-elastic-beanstalk,Python,Amazon Web Services,Amazon Elastic Beanstalk,AWS没有正确解释如何管理beanstalk上与不同环境相关的不同部署环境,以及如何在源代码管理repo中保存这些设置 它们清楚地解释了如何在.ebextensions中设置python.config,如下所示: "aws:elasticbeanstalk:container:python:environment": DJANGO_SETTINGS_MODULE: "settings" SERVER_ROOT: "/opt/python/current/app/" 但是,如果您想拥有多

AWS没有正确解释如何管理beanstalk上与不同环境相关的不同部署环境,以及如何在源代码管理repo中保存这些设置

它们清楚地解释了如何在.ebextensions中设置python.config,如下所示:

"aws:elasticbeanstalk:container:python:environment":
  DJANGO_SETTINGS_MODULE: "settings"
  SERVER_ROOT: "/opt/python/current/app/"
但是,如果您想拥有多个环境(如staging和prod),则当前必须交换配置文件。更糟糕的是,对于诸如登台这样的共享环境,您计划如何将其保留在源代码管理树中?似乎每次推送时都需要这些配置环境设置


我还发现AWS不允许我部署未老化的更改,这意味着编写脚本来处理我的部署也不是一个选项。我在这里遗漏了什么?

还没有尝试过,但您似乎可以通过容器自身的参数而不是配置文件来传递
DJANGO\u设置\u模块。您可以通过Beanstalk控制台的环境详细信息->编辑配置->容器部分进行更新。
正如我的想法:

  • 创建多个环境“生产”、“暂存”等
  • 使用相关的
    DJANGO\u设置\u模块
    值配置每个模块
  • .ebextensions
  • 将应用程序部署到预先创建的环境

我过去在这方面做过一些挖掘,他们似乎希望您使用
eb分支机构
来配置不同的环境,然后在eb客户端级别的本地选项设置中以不同的方式配置选项(当您初始化分支机构时)

考虑到这一点,环境配置(即,
DJANGO\u SETTINGS\u MODULE
)应该与应用程序代码分开管理,因此我假设将其排除在ebextensions之外,并在导航到新环境时进行设置。如果我切换到一个现有的,需要确保该值设置正确的环境,我想发挥