在 Elastic Beanstalk 中保存文件的建议
Recommendations For Saving Files in Elastic Beanstalk
我有一个 ELB 应用程序,我们刚刚添加了照片上传功能。目前,这会将图像保存在 ELB 部署目录中的一个文件夹中,将 URL 保存到 DynamoDb table。一切正常。每当用户想要查看图像时,我们只需将 URL 附加到 UI 中标签的 src 属性,浏览器就会直接下载图像。
但是我想到,如果底层 EC2 实例终止并重新启动,我们很可能会丢失所有照片。我的这个假设是否正确?如果是这样,这里的最佳做法是什么?上传应该始终保存在 S3 存储桶中吗?非常感谢任何指导。
Should uploads always be saved in an S3 bucket?
TL;DR
在弹性云环境中,是的,总是将您的静态内容移动到可靠的外部存储(在本例中为 S3)。它将使您的应用程序更好地扩展。查看 S3 问题 here
资源:
- IAM Credentials 为您的应用密钥提供访问 s3 的权限,在 Beanstalk 中开箱即用。
- S3 Getting Started
- Media Reference Architecture Describes at least part of what you're looking for. Look at the S3/Datastore/Web Server interaction there. More here.
更长的描述
在传统架构中,您可能将一个驱动器连接到一两个 Web 服务器,并将文件存储在那里。你总是期望那些会起来。如果你 运行 磁盘 space 不足,你就有问题了。如果您的服务器出现故障,那么您也遇到了问题。即使您有备份,您也 运行 面临宕机的风险,您需要恢复所有数据并手动启动服务器。
在云架构中,您基本上承认 "machine" 是容易出错的,不再依赖它来存储任何应用程序状态。它应该用于在磁盘上存储启动应用程序所需的内容 and/or 临时存储,但如果您需要长期存储,这就是为什么存在像 S3 这样的服务的原因!通过从您的应用程序服务器中消除状态,您可以自动扩展它们(无论您认为合适),而不必担心用户的内容。如果您有其他服务需要该内容,他们也可以通过适当的权限从那里获取它。
我有一个 ELB 应用程序,我们刚刚添加了照片上传功能。目前,这会将图像保存在 ELB 部署目录中的一个文件夹中,将 URL 保存到 DynamoDb table。一切正常。每当用户想要查看图像时,我们只需将 URL 附加到 UI 中标签的 src 属性,浏览器就会直接下载图像。
但是我想到,如果底层 EC2 实例终止并重新启动,我们很可能会丢失所有照片。我的这个假设是否正确?如果是这样,这里的最佳做法是什么?上传应该始终保存在 S3 存储桶中吗?非常感谢任何指导。
Should uploads always be saved in an S3 bucket?
TL;DR
在弹性云环境中,是的,总是将您的静态内容移动到可靠的外部存储(在本例中为 S3)。它将使您的应用程序更好地扩展。查看 S3 问题 here
资源:
- IAM Credentials 为您的应用密钥提供访问 s3 的权限,在 Beanstalk 中开箱即用。
- S3 Getting Started
- Media Reference Architecture Describes at least part of what you're looking for. Look at the S3/Datastore/Web Server interaction there. More here.
更长的描述
在传统架构中,您可能将一个驱动器连接到一两个 Web 服务器,并将文件存储在那里。你总是期望那些会起来。如果你 运行 磁盘 space 不足,你就有问题了。如果您的服务器出现故障,那么您也遇到了问题。即使您有备份,您也 运行 面临宕机的风险,您需要恢复所有数据并手动启动服务器。
在云架构中,您基本上承认 "machine" 是容易出错的,不再依赖它来存储任何应用程序状态。它应该用于在磁盘上存储启动应用程序所需的内容 and/or 临时存储,但如果您需要长期存储,这就是为什么存在像 S3 这样的服务的原因!通过从您的应用程序服务器中消除状态,您可以自动扩展它们(无论您认为合适),而不必担心用户的内容。如果您有其他服务需要该内容,他们也可以通过适当的权限从那里获取它。