Bucket管理
更新时间:2020-04-02
新建Bucket
-
基本流程
- 创建BOSClient 类的实例。
- 执行BOSClient.createBucket()方法,你需要提供Bucket的名字。
- 对返回的对象可以调用执行getLocation()/getName()获取Bucket所在区域和Bucket名字。
-
示例代码
Java1BosClient client = new BosClient(config); //创建BOSClient实例 2client.createBucket(<BucketName>); //新建一个Bucket,指定Bucket名称
-
完整示例
Java1import android.app.Activity; 2import android.os.Bundle; 3 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.CreateBucketResponse; 11 12public class ExampleActivity extends Activity { 13 14 private static String bucketName = <BucketName>; 15 16 @Override 17 protected void onCreate(Bundle savedInstanceState) { 18 super.onCreate(savedInstanceState); 19 setContentView(R.layout.activity_main); 20 21 new Thread(new Runnable() { 22 @Override-9 23 public void run() { 24 try { 25 BosClientConfiguration config = new BosClientConfiguration(); 26 config.setCredentials(new DefaultBceCredentials(<AccessKeyID>, <SecretAccessKey>)); //您的原始AK/SK 27 config.setEndpoint(<EndPoint>); //Bucket所在区域 28 BosClient client = new BosClient(config); 29 30 CreateBucketResponse response = client.createBucket(<BucketName>); //新建一个Bucket并指定Bucket名称 31 32 System.out.println(response.getLocation()); 33 System.out.println(response.getName()); 34 35 } catch (BceServiceException e) { 36 System.out.println("Error ErrorCode: " + e.getErrorCode()); 37 System.out.println("Error RequestId: " + e.getRequestId()); 38 System.out.println("Error StatusCode: " + e.getStatusCode()); 39 System.out.println("Error Message: " + e.getMessage()); 40 System.out.println("Error ErrorType: " + e.getErrorType()); 41 } catch (BceClientException e) { 42 System.out.println("Error Message: " + e.getMessage()); 43 } 44 } 45 }).start(); 46 } 47 }
注意:由于Bucket的名称在所有区域中是唯一的,所以需要保证BucketName不与其他所有区域上的BucketName相同。
查看Bucket列表
-
基本流程
- 创建BOSClient类的实例。
- 执行BOSClient.listBuckets()方法,会返回ListBucketsResponse类的实例。
- 对ListBucketsResponse类型实例可以进行getBuckets()/getOwner()/getMetadata()操作。
-
示例代码
如下代码可以列出用户所有的Bucket:
Java1List<BucketSummary> buckets = client.listBuckets().getBuckets(); 2// 遍历Bucket 3for (BucketSummary bucket : buckets) { 4 System.out.println(bucket.getName()); 5 }
如下代码可以列出Bucket的Owner:
Java1User usr = client.listBuckets().getOwner(); 2System.out.println(usr.getDisplayName()); 3System.out.println(usr.getId());
如下代码可以列出Bucket的Metadata:
Java1BosResponseMetadata metaData = client.listBuckets().getMetadata(); 2System.out.println(metaData.getBceRequestId()); 3System.out.println(metaData.getBceContentSha256()); 4System.out.println(metaData.getContentLength()); 5System.out.println(metaData.getEtag()); 6System.out.println(metaData.getExpires()); 7System.out.println(metaData.getContentMd5()); 8System.out.println(metaData.getContentDisposition()); 9System.out.println(metaData.getLastModified());
注意:Bucket如果没有设置这些参数,返回时可能为空。
-
完整示例
Java1import java.util.List; 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.model.User; 9import com.baidubce.services.bos.BosClient; 10import com.baidubce.services.bos.BosClientConfiguration; 11import com.baidubce.services.bos.model.BosResponseMetadata; 12import com.baidubce.services.bos.model.BucketSummary; 13import com.baidubce.services.bos.model.CreateBucketResponse; 14import com.baidubce.services.bos.model.ListBucketsResponse; 15 16public class ExampleActivity extends Activity { 17 18 @Override 19 protected void onCreate(Bundle savedInstanceState) { 20 super.onCreate(savedInstanceState); 21 setContentView(R.layout.activity_main); 22 new Thread(new Runnable() { 23 @Override 24 public void run() { 25 try { 26 BosClientConfiguration config = new BosClientConfiguration(); 27 config.setCredentials(new DefaultBceCredentials(<AccessKeyID>, <SecretAccessKey>)); 28 config.setEndpoint(<EndPoint>); 29 BosClient client = new BosClient(config); 30 31 ListBucketsResponse bucketsResponse = client.listBuckets() ; 32 // 获得Bucket列表 33 List<BucketSummary> buckets = bucketsResponse.getBuckets(); 34 for (BucketSummary bucket : buckets) { 35 System.out.println(bucket.getName()); 36 } 37 38 // 获得Bucket的Owner 39 User user = bucketsResponse.getOwner(); 40 System.out.println(user.getDisplayName()); 41 System.out.println(user.getId()); 42 43 } catch (BceServiceException e) { 44 System.out.println("Error ErrorCode: " + e.getErrorCode()); 45 System.out.println("Error RequestId: " + e.getRequestId()); 46 System.out.println("Error StatusCode: " + e.getStatusCode()); 47 System.out.println("Error Message: " + e.getMessage()); 48 System.out.println("Error ErrorType: " + e.getErrorType()); 49 } catch (BceClientException e) { 50 System.out.println("Error Message: " + e.getMessage()); 51 } 52 } 53 }).start(); 54} 55}
判断Bucket是否存在
-
基本流程
- 创建BOSClient类的实例。
- 执行BOSClient.doesBucketExist()方法。
- doesBucketExist()方法会返回布尔类型,判断bucket是否存在。
-
示例代码
Java1// 获取Bucket的存在信息 2boolean exists = client.doesBucketExist(<BucketName>); //指定Bucket名称 3 4// 输出结果 5if (exists) { 6 System.out.println("Bucket exists"); 7} else { 8 System.out.println("Bucket not exists"); 9}
-
完整示例
Java1import android.app.Activity; 2import android.os.Bundle; 3import com.baidubce.BceClientException; 4import com.baidubce.BceServiceException; 5import com.baidubce.auth.DefaultBceCredentials; 6import com.baidubce.development.R; 7import com.baidubce.services.bos.BosClient; 8import com.baidubce.services.bos.BosClientConfiguration; 9 10public class ExampleActivity extends Activity { 11 12private String bucketName = <BucketName>; //您的Bucket名称 13 14@Override 15protected void onCreate(Bundle savedInstanceState) { 16 super.onCreate(savedInstanceState); 17 setContentView(R.layout.activity_main); 18 new Thread(new Runnable() { 19 @Override 20 public void run() { 21 try { 22 BosClientConfiguration config = new BosClientConfiguration(); 23 config.setCredentials(new DefaultBceCredentials(<AccessKeyID>, <SecretAccessKey>)); 24 config.setEndpoint(<EndPoint>); 25 BosClient client = new BosClient(config); 26 27 // 获取Bucket的存在信息 28 boolean exists = client.doesBucketExist(<BucketName>); //指定Bucket名称 29 // 输出结果 30 if (exists) { 31 System.out.println("Bucket exists"); 32 } else { 33 System.out.println("Bucket not exists"); 34 } 35 36 } catch (BceServiceException e) { 37 System.out.println("Error ErrorCode: " + e.getErrorCode()); 38 System.out.println("Error RequestId: " + e.getRequestId()); 39 System.out.println("Error StatusCode: " + e.getStatusCode()); 40 System.out.println("Error Message: " + e.getMessage()); 41 System.out.println("Error ErrorType: " + e.getErrorType()); 42 } catch (BceClientException e) { 43 System.out.println("Error Message: " + e.getMessage()); 44 } 45 } 46 }).start(); 47 48} 49}
删除Bucket
-
基本流程
- 创建BOSClient类的实例。
- 执行BOSClient.deleteBucket()方法。
- deleteBucket()无返回值,删除失败时会抛出异常。
-
示例代码
Java1client.deleteBucket(<BucketName>); //指定Bucket名称
注意:如果Bucket不为空(即Bucket中有Object和未完成的三步上传Part存在),则Bucket无法被删除,必须清空Bucket后才能成功删除。
-
完整示例
Java1import android.app.Activity; 2import android.os.Bundle; 3import com.baidubce.BceClientException; 4import com.baidubce.BceServiceException; 5import com.baidubce.auth.DefaultBceCredentials; 6import com.baidubce.development.R; 7import com.baidubce.services.bos.BosClient; 8import com.baidubce.services.bos.BosClientConfiguration; 9 10public class ExampleActivity extends Activity { 11 12 private String bucketName = <BucketName>; 13 14 @Override 15 protected void onCreate(Bundle savedInstanceState) { 16 super.onCreate(savedInstanceState); 17 setContentView(R.layout.activity_main); 18 new Thread(new Runnable() { 19 @Override 20 public void run() { 21 try { 22 BosClientConfiguration config = new BosClientConfiguration(); 23 config.setCredentials(new DefaultBceCredentials(<AccessKeyID>, <SecretAccessKey>)); 24 config.setEndpoint(<EndPoint>); 25 BosClient client = new BosClient(config); 26 27 // 删除Bucket 28 client.deleteBucket(<BucketName>); //指定Bucket名称 29 30 } catch (BceServiceException e) { 31 System.out.println("Error ErrorCode: " + e.getErrorCode()); 32 System.out.println("Error RequestId: " + e.getRequestId()); 33 System.out.println("Error StatusCode: " + e.getStatusCode()); 34 System.out.println("Error Message: " + e.getMessage()); 35 System.out.println("Error ErrorType: " + e.getErrorType()); 36 } catch (BceClientException e) { 37 System.out.println("Error Message: " + e.getMessage()); 38 } 39 } 40 }).start(); 41} 42}
Bucket权限控制
设置Bucket的访问权限
-
基本流程
- 创建BOSClient类的实例。
- 执行BOSClient.setBucketAcl()方法。
- setBucketAcl()无返回值,设置失败时会抛出异常。
-
示例代码
Java1// 设置Bucket访问权限 2client.setBucketAcl(<BucketName>, CannedAccessControlList.Private);
说明:CannedAccessControlList是枚举类型,包含三个值:
Private
、PublicRead
、PublicReadWrite
,它们分别对应相关权限。具体内容可以参考《BOS API文档 使用CannedAcl方式的权限控制》。 -
完整示例
Java1import 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()无返回值,设置失败时会抛出异常。
-
示例代码
Java1List<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文件方式的权限控制》。 -
完整示例
Java1import 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}