2016-04-14 220 views
1

我正在使用Ionic Framework并希望使用Cordova文件传输插件将文件上载到S3存储桶。所有实施例都利用POST方法...Amazon S3 - POST请求的桶策略?

https://forum.ionicframework.com/t/cordova-filetransfer-upload-image-to-aws-s3/20051/2 http://coenraets.org/blog/2013/09/how-to-upload-pictures-from-a-phonegap-app-to-amazon-s3/

  1. 我注意到,亚马逊S3仅已PUT和GET为此可直接应用到水桶按下面铲斗政策对象权限: http://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html

在上述链路的示例可以通过位于控制台亚马逊S3策略生成的下拉中找到从该下拉列表中,我注意到PostObject没有等效的“操作”(动作在Bucket Policy上下文中定义)。

有什么我在这里失踪?我是否需要创建允许POST方法和/或创建允许此操作的用户策略的存储桶策略

  1. 我也可以在上面看到的AND/OR部分使用一些清晰的;作为一名noob程序员,我将其应用于存储桶和用户策略以保证安全。
  2. 据我所知,有一个POST请求发送POST请求(按链接http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-authentication-HTTPPOST.html)。这看起来与GET的桶策略不同,而PUT与策略与请求一起发送,这与在桶策略部分中简单定义的策略不同。在POST中发送的策略(按链接)也具有与存储桶策略不同的格式。因此混乱。

我还没有尝试发送POST请求,但我认为这是另一天的任务。如果有人能帮助清除这件事,那会很棒!

回答

2

有什么我在这里失踪?

是和否。

使用POST动词不会改变您实际上正在创建对象的事实,该对象需要适当的s3:Put*权限。

s3:PutObject和​​特别是。

如果IAM用户有权创建对象并设置其acl,则该用户需要签署请求以实现该目的,该请求可以是PUTPOST

考虑,为了比较,该HEAD!= GET还发送对对象的请求HEAD需要s3:GetObject

0

你绝对可以为你的Bucket添加一个POST策略。 详情这里:http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-HTTPPOSTConstructPolicy.html与这里的一些例子斗POST政策:http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-post-example.html

至于你的第二个问题,你是正确的,你可以创建用户级别的策略,对于IAM用户,也有随着铲斗政策的效果相同。更有效地,您可以一起使用存储桶,用户和组策略以有效的方式控制对资源的访问。

+0

谢谢hephalump!抱歉,我应该澄清一下:是的,链接中显示的是该政策,但与此处显示的这些存储区政策不同,[链接](http://docs.aws.amazon.com/AmazonS3/latest/dev/example -bucket-policies.html)。我在S3中使用Amazon策略生成器复制了这些存储桶策略,但是,在下拉菜单中,它们没有表示_POST_的操作,但是对于PUT和GET操作。你知道这个的原因吗?邮政政策和其他政策有什么不同?我会更新我原来的问题。谢谢 – njho