我正在使用Ionic Framework,并希望使用Cordova文件传输插件将文件上传到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/
- 我注意到Amazon S3只有桶策略的PUT和GET对象权限,可以直接应用到桶中,如下所示:http://docs.aws.amazon.com/AmazonS3/latest/dev/example-bucket-policies.html
上面链接中的示例可以通过位于控制台中的Amazon S3策略生成器的下拉列表找到;从该下拉列表中,我注意到PostObject没有等效的“动作”(Bucket Policy上下文中定义的动作) .
有什么我需要创建一个允许POST方法的存储桶策略 AND/OR 创建允许这样做的用户策略 .
-
我也可以对上面看到的AND / OR部分使用一些清晰度;作为一名noob程序员,我打算将它应用于存储桶和用户策略以使其更加安全 .
-
我了解有一个带有POST请求的POST策略(根据链接http://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-authentication-HTTPPOST.html) . 这似乎与GET的Bucket策略和PUT不同,因为策略随请求一起发送,而不是简单地在存储桶策略部分中定义 . 在POST中发送的策略(根据链接)也具有与存储桶策略不同的格式 . 因此混乱 .
我还没有尝试发送POST请求,但我认为这是另一天的任务 . 如果有人能帮助澄清这一点,那就太好了!
2 回答
是的,不是 .
使用
POST
动词不会改变您实际创建对象的事实,这需要相应的s3:Put*
权限 .特别是
s3:PutObject
和s3:PutObjectAcl
.如果IAM用户有权创建对象并设置其acl,则该用户需要签署一个请求来完成该目的,该请求可以是
PUT
或POST
.为了比较,考虑
HEAD
!=GET
但是发送对象的HEAD
请求需要s3:GetObject
.您绝对可以在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用户创建与存储桶策略具有相同效果的用户级策略 . 您可以更有力地将存储桶,用户和组策略结合使用,以高效的方式控制对资源的访问 .