如何configurationAmazon S3权限以托pipe我的移动应用程序的文件

我有一个移动应用程序,上传文件到服务器,需要能够下载它们。 我使用S3来保存文件,并有一个RoR后端来pipe理所有这些。

是否有可能有以下设置?

  • RoR后端使用特定的“访问密钥和秘密访问密钥”来访问S3 API。 这个访问键可以访问列表中的对象,读取它们并创build新的对象。
  • 当手机应用程序上传文件时,RoR后端将其保存到S3,并生成一个URL
  • 电话下载文件,访问该URL。 它有权限读取这些文件,但不能写入,绝对没有权限列出(这是关键)
  • 我希望手机只需使用正常的HTTP GET来获取文件,而不必处理S3 api。 这是非常可取的。
  • 理想情况下,如果我可以这样做,以便手机还需要某种访问键/标记,但它可以简单地将其添加到URL作为参数,而不是通过S3 API,这将是伟大的。 这给了我一些额外的安全性,而不必将客户真正地与S3绑定,以防将来改变供应商。

AWS有很多configuration这些东西的选项,而且我不清楚哪个是最好的,哪些场景是可能的(我发现有一些选项可以生成时间有限的URL,这对我来说很棒,如果服务器可以给客户端一个只有几分钟有效的URL,万一URL被“泄漏”了,但是我一直无法弄清楚它是如何工作的)

任何指针将不胜感激!

S3签名的URL是执行此操作的首选方法。 要使用签名的URL,你的ruby后端将需要使用S3 API来生成一个有时间限制的签名的URL,然后传递给你的移动应用程序。 这样做并不要求您将访问密钥部署到您的移动应用程序,这是安全性更高的安全解决scheme,而且维护也更容易。