fhe*_*vol 0 c# amazon-s3 amazon-ec2 amazon-web-services amazon-elastic-beanstalk
我有一个 ELB 应用程序,我们刚刚添加了照片上传功能。目前,这会将图像保存在 ELB 部署目录内的文件夹中,并将 URL 保存到 DynamoDb 表。一切正常。每当用户想要查看图像时,我们只需将 URL 附加到 UI 中标记的 src 属性,浏览器就会直接下载图像。
然而,我突然想到,如果底层 EC2 实例终止并重新启动,我们很可能会丢失所有照片。我的这个假设正确吗?如果是这样,这里的最佳实践是什么?上传的内容是否应该始终保存在 S3 存储桶中?非常感谢任何指导。
上传的内容是否应该始终保存在 S3 存储桶中?
长话短说
在弹性云环境中,是的,始终将静态内容移动到可靠的外部存储(在本例中为 S3)。它将使您的应用程序更好地扩展。请参阅此处的S3 问题
资源:
更长的描述
在传统架构中,您可能有一个驱动器连接到一个或两个 Web 服务器,并将文件存储在那里。你总是期望它们会出现。如果磁盘空间不足,就会出现问题。如果你的服务器出现故障,那么你也遇到了问题。即使您有备份,您也面临着宕机、需要恢复所有数据并手动启动服务器的风险。
在云架构中,您基本上承认“机器”是容易出错的,并且不再依赖它来存储任何应用程序状态。它应该用于在磁盘上存储启动应用程序和/或临时存储所需的内容,但如果您需要长期的东西,那就是像 S3 这样的服务存在的原因!通过消除应用程序服务器的状态,您可以自动扩展它们(无论您认为合适),而无需担心用户的内容。如果您有其他服务需要该内容,他们也可以通过适当的权限从那里获取该内容。