Bucket权限控制
更新时间:2022-10-25
设置Bucket的访问权限
基本流程
- 创建BOSClient类的实例。
- 执行BOSClient.setBucketAcl()方法。
- setBucketAcl()无返回值,设置失败时会抛出异常。
示例代码
Java
1// 设置Bucket访问权限
2client.setBucketAcl(<BucketName>, CannedAccessControlList.Private);
说明:CannedAccessControlList是枚举类型,包含三个值:
Private
、PublicRead
、PublicReadWrite
,它们分别对应相关权限。具体内容可以参考《BOS API文档 使用CannedAcl方式的权限控制》。
完整示例
Java
1import org.json.JSONException;
2import android.app.Activity;
3import android.os.Bundle;
4import com.baidubce.BceClientException;
5import com.baidubce.BceServiceException;
6import com.baidubce.auth.DefaultBceCredentials;
7import com.baidubce.development.R;
8import com.baidubce.services.bos.BosClient;
9import com.baidubce.services.bos.BosClientConfiguration;
10import com.baidubce.services.bos.model.CannedAccessControlList;
11
12public class ExampleActivity extends Activity {
13
14 private String bucketName = <BucketName>;
15
16 @Override
17 protected void onCreate(Bundle savedInstanceState) {
18 super.onCreate(savedInstanceState);
19 setContentView(R.layout.activity_main);
20 new Thread(new Runnable() {
21 @Override
22 public void run() {
23 try {
24 BosClientConfiguration config = new BosClientConfiguration();
25 config.setCredentials(new DefaultBceCredentials(<AccessKeyID>, <SecretAccessKey>));
26 config.setEndpoint(<EndPoint>);
27 BosClient client = new BosClient(config);
28
29 // 设置Bucket访问权限
30 client.setBucketAcl(<BucketName>, CannedAccessControlList.Private); //指定Bucket名称,并设置Bucket权限为Private
31
32 } catch (BceServiceException e) {
33 System.out.println("Error ErrorCode: " + e.getErrorCode());
34 System.out.println("Error RequestId: " + e.getRequestId());
35 System.out.println("Error StatusCode: " + e.getStatusCode());
36 System.out.println("Error Message: " + e.getMessage());
37 System.out.println("Error ErrorType: " + e.getErrorType());
38 } catch (BceClientException e) {
39 System.out.println("Error Message: " + e.getMessage());
40 } catch (JSONException e) {
41 // TODO Auto-generated catch block
42 e.printStackTrace();
43 }
44 }
45 }).start();
46
47}
48}
设置指定用户对Bucket的访问权限
基本流程
- 创建BOSClient类的实例。
- 执行BOSClient.setBucketAcl()方法,您需要创建一个SetBucketAclRequest的实例来提供上述信息。
- setBucketAcl()无返回值,设置失败时会抛出异常。
示例代码
Java
1List<Grant> grants = new ArrayList<Grant>();
2List<Grantee> grantee = new ArrayList<Grantee>();
3List<Permission> permission = new ArrayList<Permission>();
4
5//授权给用户
6grantee.add(new Grantee(<UserID>);
7
8//设置权限
9permission.add(Permission.READ);
10grants.add(new Grant().withGrantee(grantee).withPermission(permission));
11
12//封装成request
13SetBucketAclRequest request = new SetBucketAclRequest(<BucketName>, grants);
14
15//设置bucket的访问权限
16client.setBucketAcl(request);
注意:Permission中的权限设置包含三个值:
READ
、WRITE
、FULL_CONTROL
,它们分别对应相关权限。具体内容可以参考《BOS API文档 上传ACL文件方式的权限控制》。
完整示例
Java
1import java.util.ArrayList;
2import java.util.List;
3import org.json.JSONException;
4import android.app.Activity;
5import android.os.Bundle;
6import com.baidubce.BceClientException;
7import com.baidubce.BceServiceException;
8import com.baidubce.auth.DefaultBceCredentials;
9import com.baidubce.development.R;
10import com.baidubce.services.bos.BosClient;
11import com.baidubce.services.bos.BosClientConfiguration;
12import com.baidubce.services.bos.model.Grant;
13import com.baidubce.services.bos.model.Grantee;
14import com.baidubce.services.bos.model.Permission;
15import com.baidubce.services.bos.model.SetBucketAclRequest;
16
17public class ExampleActivity extends Activity {
18
19 private String bucketName = <BucektName>;
20 List<Grant> grants = new ArrayList<Grant>();
21 List<Grantee> grantee = new ArrayList<Grantee>();
22 List<Permission> permission = new ArrayList<Permission>();
23
24 @Override
25 protected void onCreate(Bundle savedInstanceState) {
26 super.onCreate(savedInstanceState);
27 setContentView(R.layout.activity_main);
28 new Thread(new Runnable() {
29 @Override
30 public void run() {
31 try {
32 BosClientConfiguration config = new BosClientConfiguration();
33 config.setCredentials(new DefaultBceCredentials(<AccessKeyID>, <SecretAccessKey>));
34 config.setEndpoint(<EndPoint>);
35 BosClient client = new BosClient(config);
36
37 //授权给特定用户
38 grantee.add(new Grantee("UserId_1"));
39 grantee.add(new Grantee("UserId_2"));
40
41 //授权给Everyone
42 grantee.add(new Grantee("*"));
43
44 //设置权限
45 permission.add(Permission.READ);
46 permission.add(Permission.WRITE);
47
48 grants.add(new Grant().withGrantee(grantee).withPermission(permission));
49
50 //封装request
51 SetBucketAclRequest request = new SetBucketAclRequest(<BucketName>, grants);
52
53 //设置bucket的访问权限
54 client.setBucketAcl(request);
55
56 } catch (BceServiceException e) {
57 System.out.println("Error ErrorCode: " + e.getErrorCode());
58 System.out.println("Error RequestId: " + e.getRequestId());
59 System.out.println("Error StatusCode: " + e.getStatusCode());
60 System.out.println("Error Message: " + e.getMessage());
61 System.out.println("Error ErrorType: " + e.getErrorType());
62 } catch (BceClientException e) {
63 System.out.println("Error Message: " + e.getMessage());
64 } catch (JSONException e) {
65 // TODO Auto-generated catch block
66 e.printStackTrace();
67 }
68 }
69 }).start();
70
71}
72}