我有一个ELB应用程序,我们刚刚添加了照片上传功能。目前,这将图像保存在ELB中部署目录中的文件夹中,将URL保存到DynamoDb表。一切正常。每当用户想要查看图像时,我们只需将URL附加到UI中标记的src属性,浏览器就会直接下载图像。
然而,我发现如果基础EC2实例终止并重新启动,我们很可能会丢失所有照片。我在这个假设中是否正确?如果是这样,这里的最佳做法是什么?上传是否应始终保存在S3存储桶中?任何指导都非常感激。
答案 0 :(得分:3)
上传是否应始终保存在S3存储桶中?
<强> TL; DR 强>
在弹性云环境中,是的,始终将静态内容移动到可靠的外部存储(在本例中为S3)。它将使您的应用程序更好地扩展。请参阅S3问题here
资源:
更长的说明
在传统架构中,您可能将驱动器连接到一个或两个Web服务器,然后将文件存储在那里。你总是希望那些人起来。如果磁盘空间不足,则会出现问题。如果你是服务器疯了,你也遇到了问题。即使您有备份,也存在降低风险并且需要恢复所有数据并手动启动服务器的风险。
在云架构中,您基本上承认“机器”是错误的,不再依赖它来存储任何应用程序状态。它应该用于存储你需要的东西在磁盘上启动应用程序和/或临时存储,但如果你需要长期的东西,这就是为什么像S3这样的服务存在!通过从您的应用服务器中消除状态,您可以自动缩放它们(无论您认为合适),而无需担心用户的内容。如果您有其他需要该内容的服务,他们也可以从那里获得具有适当权限的服务。