Elastic Beanstalk 没有看到 DATABASES 设置的变化 - Django

Posted

技术标签:

【中文标题】Elastic Beanstalk 没有看到 DATABASES 设置的变化 - Django【英文标题】:Elastic Beanstalk is not seeing changes in DATABASES setting - Django 【发布时间】:2017-05-05 00:43:12 【问题描述】:

使用 Postgres 在 EB 上部署 Django 时出现奇怪的问题。

上下文:使用 postgresql 9.5 在 Elastic Beanstalk 上部署 Django 应用程序。我在两台单独的 Windows 10 机器上进行了尝试,结果相同。 Python 3.5 和 Django 1.10.4。

问题:使用 RDS 环境变量连接数据库时,我不小心在 settings.py 中查找“RDS_USER”而不是“RDS_USERNAME”。这自然会为“RDS_USER”引发 KeyError。

但是,如果我将其更改为正确的值,提交更改并重新部署,eb 不会获取更改。

尝试运行迁移时,“RDS_USER”仍然出现相同的 KeyError。

我可以在为 postgres 修改 settings.py 并添加一些命令(venv、迁移)/包(git、postgresql95-devel)之后复制它。

有其他人经历过吗?

如果我创建一个新实例并最初使用正确的变量名称进行部署,它可以正常工作。

settings.py:

if 'RDS_DB_NAME' in os.environ:
    DATABASES = 
        'default': 
            'ENGINE': 'django.db.backends.postgresql',
            'NAME': os.environ['RDS_DB_NAME'],
            'USER': os.environ['RDS_USERNAME'],
            'PASSWORD' : os.environ['RDS_PASSWORD'],
            'HOST': os.environ['RDS_HOSTNAME'],
            'PORT':os.environ['RDS_PORT']
        
    
else:
    DATABASES = 
        'default': 
            'ENGINE': 'django.db.backends.postgresql',
            'NAME': 'name',
            'USER':'user',
            'PASSWORD':'password',
            'HOST':'localhost',
            'PORT':''
        
    

【问题讨论】:

您是使用控制台还是 awscli 进行部署? 【参考方案1】:

我也使用 awscli,我的数据库设置看起来和你的一样,而且工作正常。您是否尝试创建一个新的 EB 实例并查看是否可行?

【讨论】:

这就是我以前做过的,它没有问题。只是想知道为什么会发生这种情况/是否有办法避免切换到新实例

以上是关于Elastic Beanstalk 没有看到 DATABASES 设置的变化 - Django的主要内容,如果未能解决你的问题,请参考以下文章

使用 AWS Elastic Beanstalk 的 Laravel 队列

在 AWS Elastic Beanstalk 上使用 Docker 预编译资产

如何在 AWS Elastic Beanstalk 上部署 django 频道 2.x?

AWS Elastic Beanstalk 运行状况检查偶尔失败

AWS Elastic Beanstalk 上的 Django 1.7 - 应用程序未运行,仅看到“索引 /”

Elastic Beanstalk 不会自动从 ECR 更新图像