AWS 的 S3 或 EFS 中的数千个图像存储在哪里?
Where to store thousands of images in S3 or EFS of AWS?
我会在不久的将来做一个项目,一个我们将在一段时间内存储成千上万张图像的项目。我正在艰难地决定是使用 Amazon S3 还是 EFS 来存储这些图像。我认为两者都是很好的选择,但我的问题是什么是最好的服务或什么是最佳实践?
我的应用程序将用 Laravel 完成,我已经完成了这两项服务的集成。
项目的大部分特点是:
- 我将存储的大部分文件将是大约 95% 的照片。
- 每天将存储大约 1.5k 张照片。
- 照片很大(专业相机)。
- 应用程序的流量不会很大,大约。一次 100 个用户。
- 每个用户每天会查阅大约100张照片。
你推荐什么?
S3绝对是正确答案和练习。我已经构建了许多像您描述的应用程序,有些应用程序有数以亿计的图像,而 S3 更胜一筹。它还允许灵活性,例如您的 API 将图像作为预签名 URL 返回,这将减少服务器的负载,图像可以通过静态 Web 托管直接链接,并且它提供生命周期策略以归档较少使用的数据。此外,使用事件触发器可以轻松地与其他 AWS 服务进一步集成。
至于storing/uploading,S3 分段上传对于提高性能和可靠性都非常有用。
EFS 将对您的场景类型有意义,如果您正在执行一些密集处理,其中您有一个服务器集群,需要使用共享文件系统降低延迟 - 想想 HPC。 EFS 的成本也会更高,并且不提供与 S3 一样多的可扩展性选项或内置功能。您的方案听起来并不需要 EFS。
http://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html
http://docs.aws.amazon.com/AmazonS3/latest/dev/ShareObjectPreSignedURL.html
http://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html
http://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html
http://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html
对于您提出的场景,选择 AWS S3。为什么?
- 由于添加图片的频率较高,因此成本约为 EFS 的 1/10。
- 由于可以使用 S3 直接上传和下载文件,因此网络服务器的开销更少。
- 您可以利用 Lambda 的事件驱动处理,例如生成缩略图,通过 S3 Lambda 触发器进行图像处理过滤器。
- 更高级别的可用性和持久性 SLA。
- 支持内置生命周期管理以归档并降低成本。
AWS EFS如果碰巧经常修改镜像也是一个选项(EBS也是一个选项)
您还可以考虑将 AWS CloudFront 与缓存图像选项结合使用。
注意:最后不是关于使用单一服务。根据您即将到来的需求,您可以选择其中之一或两者。
我会在不久的将来做一个项目,一个我们将在一段时间内存储成千上万张图像的项目。我正在艰难地决定是使用 Amazon S3 还是 EFS 来存储这些图像。我认为两者都是很好的选择,但我的问题是什么是最好的服务或什么是最佳实践?
我的应用程序将用 Laravel 完成,我已经完成了这两项服务的集成。
项目的大部分特点是:
- 我将存储的大部分文件将是大约 95% 的照片。
- 每天将存储大约 1.5k 张照片。
- 照片很大(专业相机)。
- 应用程序的流量不会很大,大约。一次 100 个用户。
- 每个用户每天会查阅大约100张照片。
你推荐什么?
S3绝对是正确答案和练习。我已经构建了许多像您描述的应用程序,有些应用程序有数以亿计的图像,而 S3 更胜一筹。它还允许灵活性,例如您的 API 将图像作为预签名 URL 返回,这将减少服务器的负载,图像可以通过静态 Web 托管直接链接,并且它提供生命周期策略以归档较少使用的数据。此外,使用事件触发器可以轻松地与其他 AWS 服务进一步集成。
至于storing/uploading,S3 分段上传对于提高性能和可靠性都非常有用。
EFS 将对您的场景类型有意义,如果您正在执行一些密集处理,其中您有一个服务器集群,需要使用共享文件系统降低延迟 - 想想 HPC。 EFS 的成本也会更高,并且不提供与 S3 一样多的可扩展性选项或内置功能。您的方案听起来并不需要 EFS。
http://docs.aws.amazon.com/AmazonS3/latest/dev/WebsiteHosting.html
http://docs.aws.amazon.com/AmazonS3/latest/dev/ShareObjectPreSignedURL.html
http://docs.aws.amazon.com/AmazonS3/latest/dev/object-lifecycle-mgmt.html
http://docs.aws.amazon.com/AmazonS3/latest/dev/NotificationHowTo.html
http://docs.aws.amazon.com/AmazonS3/latest/dev/mpuoverview.html
对于您提出的场景,选择 AWS S3。为什么?
- 由于添加图片的频率较高,因此成本约为 EFS 的 1/10。
- 由于可以使用 S3 直接上传和下载文件,因此网络服务器的开销更少。
- 您可以利用 Lambda 的事件驱动处理,例如生成缩略图,通过 S3 Lambda 触发器进行图像处理过滤器。
- 更高级别的可用性和持久性 SLA。
- 支持内置生命周期管理以归档并降低成本。
AWS EFS如果碰巧经常修改镜像也是一个选项(EBS也是一个选项)
您还可以考虑将 AWS CloudFront 与缓存图像选项结合使用。
注意:最后不是关于使用单一服务。根据您即将到来的需求,您可以选择其中之一或两者。