使用具有弹性beanstalk的数据库

Sid*_*wat 1 database django amazon-web-services amazon-elastic-beanstalk

我一直在尝试在AWS上部署基于Django的问卷调查应用程序.我完全不熟悉AWS和Web应用程序.
当我构建我的应用程序时,它在localserver上正常运行,我在settings.py中使用了它:

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.sqlite3',
    'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}
Run Code Online (Sandbox Code Playgroud)

我已成功使用弹性beanstalk成功部署我的应用程序,它工作正常.但后来我不得不对我的代码进行一些更改,并使用本地目录中的"eb deploy"来部署新版本.
这导致所有数据丢失(到目前为止填写的回复).我意识到我需要对我的数据库做一些事情.由于我对这一切都是全新的,所以我们将不胜感激.

小智 7

伙计,我过去有这种经历,对你没有好消息.最糟糕的是,没有人告诉我现在我会告诉你什么.这意味着我在了解正在发生的事情之前花了很多时间......

想一想:当您创建弹性beanstalk环境时,AWS会为您提供一切:实例,eb卷,负载均衡器等.使用控制台或AWS cli上载修订时,AWS会基于弹性beanstalk映像从头开始重新创建实例.这意味着保存在环境磁盘上的每个数据都将被丢弃.新环境将使用"空"磁盘进行初始化(因此平台文件将在那里).这意味着:根据您保存的内容,您的数据库将生活在天堂或地狱中.

如果需要在实例终止/重新初始化后保留数据,则必须配置额外的弹性块存储或弹性文件系统.但要使其工作,您必须更改初始化脚本以在初始化后附加块存储或文件系统.请记住,在终止/重新启动实例时,Elastic Beanstalk有点粗野.如果你的数据库需要一些正确关闭的程序,eb就会让它哭(根据个人经验评论).

本案例的最佳实践是将数据库安装在不同的实例中,并使其独立于应用程序环境运行.在这种情况下,您可以在部署新修订时忘记数据库.

点击此处了解更多信息.