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

Amazon s3 需要在S3项目上设置多个固定ACL,amazon-s3,acl,Amazon S3,Acl,我们有一项服务,我们的客户让我们访问他们的S3存储桶,我们将项目推入这些S3存储桶。我们需要能够做两件事: 将项目的权限设置为可公开读取 将bucket的所有者设置为对该项具有完全权限 以下是我已经知道的: 我不能有两个带PUT的罐装ACL 问题: 我“可以”设置ACL头,但如果不知道所有者的信息(如cannonical_id或电子邮件),则无法通过头设置“所有者拥有完全权限”,对吗?是否有“所有者拥有完全权限”的“uri”版本,如“公共读取”(例如http://acs.amazonaws.co

我们有一项服务,我们的客户让我们访问他们的S3存储桶,我们将项目推入这些S3存储桶。我们需要能够做两件事:

  • 将项目的权限设置为可公开读取
  • 将bucket的所有者设置为对该项具有完全权限
  • 以下是我已经知道的:

    我不能有两个带PUT的罐装ACL

    问题:

    我“可以”设置ACL头,但如果不知道所有者的信息(如cannonical_id或电子邮件),则无法通过头设置“所有者拥有完全权限”,对吗?是否有“所有者拥有完全权限”的“uri”版本,如“公共读取”(例如http://acs.amazonaws.com/groups/global/AllUsers你呢


    我不想分别进行两次调用(一次用于获取Bucket所有者信息),另一次用于放置具有两种权限的项目。

    我遇到了相同的问题,下面的代码可以获得您所需的权限

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

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

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