Amazon S3:只允许用户访问任何存储桶中的子文件夹

我试图编写一个策略,允许用户读取任何存储桶(该部分工作),但只写入任何存储桶上的特定子文件夹。

这是我迄今的政策(阅读工作,但它仍然允许写入桶根):

{ "Version": "2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:Get*", "s3:List*" ], "Resource": [ "*" ] }, { "Effect": "Deny", "Action": [ "s3:PutObject" ], "Resource": [ "*" ] } { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::*/test" "arn:aws:s3:::*/test/*" ] } ] } 

有了这个策略,用户仍然可以写入存储桶的根目录,用户只能在任何存储桶中写入“testing”子文件夹。

我也尝试在最后的声明中添加条件:

 { "Effect": "Allow", "Action": [ "s3:PutObject" ], "Resource": [ "arn:aws:s3:::*/pdf-test", "arn:aws:s3:::*/pdf-test/*" ], "Condition": { "StringLike": { "s3:prefix": ["pdf-test/*"] } } } 

但是现在用户不能写任何东西。

如何防止用户写入任何文件夹,除了“testing”在任何存储桶?