2017-08-26 42 views
0

我会在不久的将来制作一个项目,这是一个项目,我们将在这个过程中存储数千张图片。我正在艰难地决定是否使用Amazon S3或EFS来存储这些图像。我认为这是一个非常好的选择,但我的问题是最好的服务是什么,或者最佳实践是什么?哪里可以在S3的S3或EFS中存储数千张图片?

我的应用程序将与Laravel完成,我已经完成了两项服务的整合。

大部分项目的特点是:

  • 大多数我店将约95%的照片文件。
  • 每天大约存储1.5k张照片。
  • 照片非常大(专业相机)。
  • 到应用程序的流量不会太大,一次有100个用户。
  • 每个用户每天会咨询约100张照片。

你推荐什么?

回答

4

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

+0

这是回答您的问题吗? – BryceH

+0

非常感谢@BryceH我会非常认真地听取您的意见,我发现s3具有比AWS演进中其他任何服务都要好的可扩展性。我还打算使用AWS Rekognition的服务,并且通过S3,这项工作非常便利。 – Jomab

2

对于您提出的AWS S3的情况是选择。为什么?

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

AWS EFS也可以是一个选项,如果它发生频繁修改图像(如果EBS也是一个选项)

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

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

+0

非常感谢你@Ashan,我会根据你的建议在我的项目中使用AWS S3。 – Jomab

+0

我将分析我的图像修改的频率,我不认为它是非常好的观察结果。 – Jomab