设置桶访问权限
您可以使用 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());
}