AWS S3和移动电话架构

问题描述:

这里有:AWS S3和移动电话架构

我有一个AWS S3存储桶,包含一个文件夹和一个移动应用程序。

我想在这间2这样的架构是建立一个servlet:

电话<>的Servlet <> S3

我不希望手机具有对S3直接访问所以servlet将使用访问密钥和密钥来使用凭据上传和从S3存储桶下载。

我希望手机先有图片的预览,这意味着他将加载图像的URL像https://s3.amazon.com/abc/abc.jpg和和手机缓存它。以前,我将桶策略设置为public,因此任何人都可以访问该图片,但现在我想确保它的安全,因此它们之间的servlet的附加层。

我的想法是让手机发送POST请求给servlet。 认证电话用户之后的Servlet将使用凭证从S3存储桶下载文件。然后Servlet将base64编码文件并将其发送到手机进行显示。

我的问题是,是否有更好的方式来处理呢?例如: 发送POST到servlet。 Servlet进行身份验证并以某种方式使用凭据,将手机重定向到存储桶上的图像url链接,以便我可以跳过base64编码部分。

还是有更好的和适当的方式做到这一点?谢谢!

亚马逊S3有一个“预签署网址”功能,它允许您创建一个URL来访问其他方式保护的内容,有时间限制。在their documentation page,寻找“查询字符串请求验证另类”

你可以有你的servlet生成标识的URL,并将其提供给客户端的重定向。

+0

有没有类似的方式上传图片到S3? – Maurice 2011-12-19 15:32:15

+0

好吧,看起来可能,而不是一个GET,你做一个PUT来代替。感谢您的指导。 – Maurice 2011-12-19 23:42:19

请记住,预先签名的uRL必须具有到期日期。当我不关心在以后扩展或删除访问时,他们是一个不错的选择。为了全面,直接的控制,我选择了中介服务器来处理S3“家务”。