如何使用AWS S3存储用户上传的图片?

7
我正在创建一款iPhone应用程序,允许用户上传并共享照片。目前,上传的照片存储在我订阅的1and1云服务器中。现在我想尝试AWS。我已经订阅了一个免费的AWS Linux EC2,并设置了php/mysql。我的问题是,为了可扩展性,用户图片应该存储在EC2还是S3中?如何连接EC2和S3,以便用户上传的照片将存储在S3中?我的理解是,当用户将照片上传到我的EC2实例时,它会存储在EC2中,并且很快会填满空间,因为我只有5GB的空间。

对于AWS的知识有限,我的问题可能听起来很蠢,但任何帮助和建议都将不胜感激!

2个回答

7

您应该将图片存储在S3中,EC2实例内部存储的数据不是持久的。使用AWS SDK将数据上传到S3。


2
如果您将EC2实例创建为EBS支持的卷,则它们是持久的,这也是您几乎总是应该这样做的原因。https://dev59.com/BnA65IYBdhLWcg3wyh57#3630707 - Eric J.
嗨,迈克尔 - 你是说我的应用程序应该直接调用S3 iOS API将照片保存在S3中吗?我看过一篇帖子说S3是“最终一致性”,这意味着在成功上传照片后,照片可能无法立即供读取使用。但是iPhone应用程序确实需要从服务器读取照片以立即在屏幕上显示。这样,iPhone应用程序将把上传解释为“失败”,并将再次尝试上传。 - 100calorie
Eric,请查看以下链接:https://dev59.com/YXE95IYBdhLWcg3wf98F - 100calorie
嗨@100calorie,S3在大多数地区提供读写一致性(请参见此处),因此在选择存储桶的区域时请注意这一点。 - Michal Klouda

6
对于这个用例,我会使用S3。
使用S3作为图片储存的优势在于,您可以轻松地使用Amazon's Cloud Front CDN以S3为源(您也可以使用EC2实例,但那需要更多的工作)。
如何将EC2与S3连接以便用户上传的照片存储在S3中?
有一个适用于PHP的S3 API。

http://aws.amazon.com/sdkforphp/


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接