2015-05-13 79 views
2

我正在研究如何使用AWS Cloudfront开发第三方可用于访问存储在S3存储桶中的数据的API。AWS REST API设计

我环顾四周,找不到任何好的例子,如果这是可能的方式,我想实现它。

基本上我需要做的就是通过使用签名URL 的HTTP请求来提供对S3存储桶中的JSON数据的访问,这些签名使用为Amazon身份和访问管理控制台中的每个用户生成的访问密钥签名。我然后 为每个用户分配用户特定的策略,以定义他们可以访问哪些存储桶,文件夹和对象。

第三方是否有可能以这种方式访问​​数据,而无需使用cloudfront API创建签名url或成为AWS账户持有人?

可我只是为他们提供的URL对象和我产生这样的要求会是这样,他们可以通过浏览器访问他们的特定访问键:

https://www.example.com/examplebucket/examplefolder/exampleobject?key-pair-id=1111-1111-1111-1111 

我已经试过这我自己但只能得到一个拒绝访问错误 - 需要签名,但我可以看到得到这个签名的唯一方法是使用cloudfront API创建签名网址的 。

任何人有任何想法,如果这种方法是可能的或更好的方法?

感谢

回答

0

的另一个选择的Cloudfront私人内容将建立自己的服务器。对于其他AWS服务,如数据库,这样可以。但由于资源是一个S3对象,因此除非您是服务请求的服务器,否则很难屏蔽该url。所以不幸的是,Cloudfront仍然是访问限制的可行方式。请注意,您仍然需要设置服务器来验证将获得签名url的用户。

+0

感谢Inmyth为您的答案。将对象设置为公共工程很好,但我需要限制对不同用户的访问,这就是为什么我想知道是否可以分配用户和访问权限,以允许用户不使用Amazon API访问数据。 – d199224

+0

我修改了我的答案,并表示歉意。起初,我将你的问题解释为在没有IAM的情况下提供公共访问。但从您的评论和原始问题来看,Cloudfront API仍然是这种情况下最可行的方法。 – inmyth

+0

谢谢inmyth,我现在对我的解决方案有更好的想法 – d199224

0

如果您打算构建REST API使用API​​ Gateway。这是完全为API设计的服务,将解决诸如版本控制,缓存&等问题。它在内部使用Cloudfront,因此您将从中获得类似的好处。