1

我将在不久的将来制作一个项目,一个我们将在一段时间内存储成千上万张图像的项目。我正在艰难地决定是使用 Amazon S3 还是 EFS 来存储这些图像。我认为两者都是一个很好的选择,但我的问题是什么是最好的服务或什么是最佳实践?

我的应用程序将使用 Laravel 完成,并且我已经完成了这两种服务的集成。

该项目的大部分特点是:

  • 我将存储的大部分文件将是大约 95% 的照片。
  • 每天将存储大约 1.5k 张照片。
  • 照片非常大(专业相机)。
  • 应用程序的流量不会很多,大约。一次 100 个用户。
  • 每个用户每天会查阅大约 100 张照片。

你有什么建议吗?

4

2 回答 2

6

S3 绝对是正确的答案和练习。我已经构建了许多像您描述的应用程序,其中一些具有数以亿计的图像,而 S3 更胜一筹。它还具有灵活性,例如您的 API 将图像作为预签名 URL 返回,这将减少服务器的负载,图像可以通过静态 Web 托管直接链接,并且它提供生命周期策略来归档较少使用的数据。此外,使用事件触发器可以轻松与其他 AWS 服务进一步集成。

至于存储/上传,S3 分段上传对于提高性能和提高可靠性都非常有用。

如果您正在执行一些密集处理,其中您有一个需要共享文件系统的较低延迟的服务器集群 - 想想 HPC,那么 EFS 对您的场景类型是有意义的。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

于 2017-08-26T02:29:40.920 回答
4

对于您提出的方案,AWS S3 是选择。为什么?

  • 由于添加图像的频率更高,它的成本大约是 EFS 的 1/10。
  • 由于可以使用 S3 直接上传和下载文件,因此减少了 Web 服务器的开销。
  • 您可以利用 Lambda 来利用事件驱动处理,例如通过 S3 Lambda 触发器生成缩略图、图像处理过滤器。
  • 更高级别的 SLA 可用性和耐用性。
  • 支持内置生命周期管理以存档和降低成本。

如果经常修改图像,AWS EFS 也可以是一个选项(其中 EBS 也是一个选项)

您还可以考虑将 AWS CloudFront 与缓存图像的任一选项一起使用。

注意:最后它不是关于使用单一服务。根据您即将到来的要求,您可以选择其中之一或两者。

于 2017-08-26T05:13:52.373 回答