在S3的S3或EFS中存储数千个图像的位置?

时间:2017-08-26 02:24:03

标签: laravel amazon-web-services amazon-s3 efs

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

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

该项目的大部分特征是:

  • 我要存储的大部分文件都是约95%的照片。
  • 每天会存储约1.5万张照片。
  • 照片非常大(专业相机)。
  • 申请的流量不会太大,约。一次100个用户。
  • 每位用户每天都会查阅约100张照片。

你推荐什么?

2 个答案:

答案 0 :(得分:5)

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

对于存储/上传,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

答案 1 :(得分:3)

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

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

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

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

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