需要在S3项目上设置多个固定ACL

时间:2012-09-19 17:41:18

标签: amazon-s3 acl

我们有一项服务,我们的客户可以让我们访问他们的S3存储桶,我们将物品推送到那些S3存储桶中。我们需要做两件事:

  1. 将项目的权限设置为可公开阅读
  2. 将存储桶的所有者设置为对项目具有完全权限
  3. 这是我已经知道的:

    我不能拥有2个带有PUT的预制ACL

    问题:

    我“可以”设置ACL标头,但是AFAIK没有办法通过标头设置“owner-have-full-permissions”而不知道有关所有者的信息(如cannonical_id或email),对吗?是否存在“所有者拥有完全权限”的“uri”版本,例如“public-read”(例如“http://acs.amazonaws.com/groups/global/AllUsers")?

    我不想进行2次单独的调用(一次是获取存储桶拥有者信息),另一次是将该项目置于两种权限之下。

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,以下代码可以获得您需要的权限。

AccessControlList accessControlList = new AccessControlList();
accessControlList.grantPermission(GroupGrantee.AllUsers, Permission.Read);
accessControlList.grantPermission(new CanonicalGrantee(s3Client.getS3AccountOwner()
    .getId()), Permission.FullControl);
putReq.setAccessControlList(accessControlList);