如何在不发出密钥的情况下允许客户端上传到Amazon S3?

map*_*yca 7 session key amazon-s3

我的一个客户有一个站点,显示从客户端应用程序上传的媒体.

此应用程序最初使用FTP,但我们正在转向S3以获取各种数据存储和性能原因.

我希望能够做到的是让这个客户端直接将文件上传到我们的中央S3商店(ala dropbox/jungledisk等等),但是我没有看到这样做的方法而没有交出我们的密钥并嵌入它们在应用程序 - 不理想!

有没有办法为客户端应用程序提供会话密钥/临时上载URL /东西?这可以通过我们网站的api完成 - 当然可以完全访问任何所需的S3密钥.

建议?

Tim*_*del 6

是的,这应该是可能的.什么,你需要做的是建立一个签名的策略文件,每上传每用户.该策略文件,签名和其他一些数据必须由客户端程序使用POST请求发送到您希望它们使用的存储桶.亚马逊将检查请求,检查参数是否在请求附带的策略文件的限制范围内,然后允许发布.请注意,不应将此策略存储桶策略混淆.事实上,这是一个可以根据需要更改的策略,它由客户端程序提交(在客户端程序从您那里获得签名副本之后).

有关详细信息,请参阅S3文档的基于浏览器的上传使用POST部分.我建议详细阅读HTML表单部分,并查看如何将POST参数发送到客户端(对于浏览器,您可以发送HTML,这是文档的措辞,用于非浏览器程序)您可能需要某种API调用,然后客户端向S3提交POST).

您还可以查看此网页,它可以让您了解如何设置参数:http://s3.amazonaws.com/doc/s3-example-code/post/post_sample.html