设置桶访问权限

您可以使用 setBucketAcl 接口进行桶访问权限的修改。桶访问权限包含了CannedAccesssControlList 与AccessControlList 两种格式。

  • CannedAccesssControlList

CannedAccesssControlList 格式的桶访问权限包含了:Private(私有读写),PublicRead(公共读私有写),PublicReadWrite(公共读写)。

权限 Java SDK对应值
私有读写 CannedAccessControlList.Private
公共读私有写 CannedAccessControlList.PublicRead
公共读写 CannedAccessControlList.PublicReadWrite
注册用户可读 CannedAccessControlList.AuthenticatedRead

使用 CannedAccesssControlList 设置桶的访问权限示例代码如下:

//设置为公共读写
String bucketName = "<your-bucket-name>";
s3.setBucketAcl(bucketName, CannedAccessControlList.PublicReadWrite);
  • AccessControlList

使用 AccessControlList 设置桶访问权限时,可以设置特定用户对桶的访问权限。桶的 AccessControlList 权限如下表:

权限 Java SDK对应值
可读,可列出桶下的对象。 Permission.Read
可写,可创建/删除/覆盖写该桶下的对象。 Permission.Write
可读取桶的acl规则。 Permission.ReadAcp
可修改桶的acl规则。 Permission.WriteAcp
完全权限。拥有以上所有权限。 Permission.FullControl

使用AccesssControlList设置桶的访问权限示例代码如下:

String bucketName = "<your-bucket-name>";
try {
    AccessControlList acl = s3.getBucketAcl(bucketName);//获取原有Bucket Acl,在此基础上添加权限
    Grant grant = new Grant(GroupGrantee.AllUsers, Permission.Read);//开启所有用户的读权限
    acl.grantAllPermissions(grant);
    CanonicalGrantee canonicalGrantee = new CanonicalGrantee("user-id");//开启用户user-id的完全控制权限
    acl.grantPermission(canonicalGrantee,Permission.FullControl);
    s3.setBucketAcl(bucketName, acl);
} catch (AmazonServiceException e) {
    System.err.println(e.getErrorMessage());
}