全部产品
弹性计算 会员服务 网络 安全 移动云 数加·大数据分析及展现 数加·大数据应用 管理与监控 云通信 阿里云办公 培训与认证 更多
存储与CDN 数据库 域名与网站(万网) 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 智能硬件
对象存储 OSS

管理Bucket

更新时间:2018-05-02 15:44:54

创建Bucket

您可以使用ossClient.createBucket创建Bucket。如下代码展示如何新建一个Bucket:

  1. // endpoint以杭州为例,其它region请按实际情况填写
  2. String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  3. // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号
  4. String accessKeyId = "<yourAccessKeyId>";
  5. String accessKeySecret = "<yourAccessKeySecret>";
  6. // 创建OSSClient实例
  7. OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
  8. // 创建bucket
  9. String bucketName = "<yourBucketName>";
  10. ossClient.createBucket(bucketName);
  11. // 关闭client
  12. ossClient.shutdown();

提示:

  • Bucket的命名规范,参见基本概念中的命名规范。
  • Bucket的名字是全局唯一的,所以您需要保证Bucket名称不与别人重复。

上面代码创建的Bucket,权限是私有读写,存储类型是标准类型(Standard)。创建Bucket时可以指定Bucket权限存储类型,示例代码如下:

  1. CreateBucketRequest createBucketRequest= new CreateBucketRequest(bucketName);
  2. // 设置bucket权限为公共读,默认是私有读写
  3. createBucketRequest.setCannedACL(CannedAccessControlList.PublicRead);
  4. // 设置bucket存储类型为低频访问类型,默认是标准类型
  5. createBucketRequest.setStorageClass(StorageClass.IA);
  6. ossClient.createBucket(createBucketRequest);

注意:创建指定类型的Bucket,请使用Java SDK 2.6.0及以上版本。

列举Bucket

您可以使用ossClient.listBuckets列举指定用户下的Bucket。

注意:如果Bucket有低频存储类型或归档存储类型,请使用Java SDK 2.6.0及以上版本。

简单列举

以下代码展示如何采用简单方式列举指定用户的Bucket列表:

  1. // endpoint以杭州为例,其它region请按实际情况填写
  2. String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  3. // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号
  4. String accessKeyId = "<yourAccessKeyId>";
  5. String accessKeySecret = "<yourAccessKeySecret>";
  6. // 创建OSSClient实例
  7. OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
  8. // 列举bucket
  9. List<Bucket> buckets = ossClient.listBuckets();
  10. for (Bucket bucket : buckets) {
  11. System.out.println(" - " + bucket.getName());
  12. }
  13. // 关闭client
  14. ossClient.shutdown();

上面的代码最多只能返回100个Bucket,已经能满足用户的需求。列举Bucket时,通过指定prefix、marker、maxkeys参数,可以过滤Bucket列表,实现灵活的查询功能。

参数 描述
prefix 限定返回的Bucket name必须以prefix作为前缀,可以不设定,不设定时不过滤前缀信息
marker 设定结果从marker之后按字母排序的第一个开始返回,可以不设定,不设定时从头开始返回
maxkeys 限定此次返回Bucket的最大数,如果不设定,默认为100,取值不能大于1000

指定前缀列举

  1. ListBucketsRequest listBucketsRequest = new ListBucketsRequest();
  2. listBucketsRequest.setPrefix("<yourBucketPrefix>");
  3. BucketList bucketList = ossClient.listBuckets(listBucketsRequest);
  4. for (Bucket bucket : bucketList.getBucketList()) {
  5. System.out.println(" - " + bucket.getName());
  6. }

指定maxkeys列举

  1. ListBucketsRequest listBucketsRequest = new ListBucketsRequest();
  2. listBucketsRequest.setMaxKeys(500);
  3. BucketList bucketList = ossClient.listBuckets(listBucketsRequest);
  4. for (Bucket bucket : bucketList.getBucketList()) {
  5. System.out.println(" - " + bucket.getName());
  6. }

删除Bucket

您可以使用ossClient.deleteBucket删除Bucket。以下代码展示如何删除一个Bucket:

  1. // endpoint以杭州为例,其它region请按实际情况填写
  2. String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  3. // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号
  4. String accessKeyId = "<yourAccessKeyId>";
  5. String accessKeySecret = "<yourAccessKeySecret>";
  6. // 创建OSSClient实例
  7. OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
  8. // 删除bucket
  9. ossClient.deleteBucket("<yourBucketName>");
  10. // 关闭client
  11. ossClient.shutdown();

提示:

  • 如果存储空间不为空(存储空间中有文件或者分片上传碎片),则存储空间无法删除。
  • 必须先删除存储空间中的所有文件后,存储空间才能成功删除。

判断Bucket是否存在

您可以使用ossClient.doesBucketExist接口判断该Bucket是否已存在。以下代码展示如何判断指定Bucket是否存在:

  1. // endpoint以杭州为例,其它region请按实际情况填写
  2. String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  3. // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号
  4. String accessKeyId = "<yourAccessKeyId>";
  5. String accessKeySecret = "<yourAccessKeySecret>";
  6. // 创建OSSClient实例
  7. OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
  8. boolean exists = ossClient.doesBucketExist("<yourBucketName>");
  9. // 关闭client
  10. ossClient.shutdown();

设置Bucket ACL

Bucket的ACL包含三类:Private(私有读写), PublicRead(公共读私有写), PublicReadWrite(公共读写)。您可以通过ossClient.setBucketAcl设置bucket的权限。

权限 Java SDK对应值
私有读写 CannedAccessControlList.Private
公共读私有写 CannedAccessControlList.PublicRead
公共读写 CannedAccessControlList.PublicReadWrite

以下代码展示如何设置Bucket的权限:

  1. // endpoint以杭州为例,其它region请按实际情况填写
  2. String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  3. // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号
  4. String accessKeyId = "<yourAccessKeyId>";
  5. String accessKeySecret = "<yourAccessKeySecret>";
  6. // 创建OSSClient实例
  7. OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
  8. // 设置bucket权限
  9. ossClient.setBucketAcl("<yourBucketName>", CannedAccessControlList.Private);
  10. // 关闭client
  11. ossClient.shutdown();

获取Bucket ACL

您可以通过ossClient.getBucketAcl获取bucket的权限。以下代码展示如何获取Bucket的ACL:

  1. // endpoint以杭州为例,其它region请按实际情况填写
  2. String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  3. // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号
  4. String accessKeyId = "<yourAccessKeyId>";
  5. String accessKeySecret = "<yourAccessKeySecret>";
  6. // 创建OSSClient实例
  7. OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
  8. AccessControlList acl = ossClient.getBucketAcl("<yourBucketName>");
  9. // Bucket权限
  10. System.out.println(acl.toString());
  11. // 关闭client
  12. ossClient.shutdown();

获取Bucket Location

Bucket Location即Bucket Region,详细请参看基本概念中的Region(区域)。

您可以通过ossClient.getBucketLocation获取bucket的权限。以下代码展示如何获取Bucket的Location:

  1. // endpoint以杭州为例,其它region请按实际情况填写
  2. String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  3. // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号
  4. String accessKeyId = "<yourAccessKeyId>";
  5. String accessKeySecret = "<yourAccessKeySecret>";
  6. // 创建OSSClient实例
  7. OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
  8. String location = ossClient.getBucketLocation("<yourBucketName>");
  9. System.out.println(location);
  10. // 关闭client
  11. ossClient.shutdown();

获取Bucket Info

Bucket的Info包括Location、CreationDate、Owner及权限等信息。以下代码展示如何获取Bucket的Info:

  1. // endpoint以杭州为例,其它region请按实际情况填写
  2. String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
  3. // 阿里云主账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM账号进行API访问或日常运维,请登录 https://ram.console.aliyun.com 创建RAM账号
  4. String accessKeyId = "<yourAccessKeyId>";
  5. String accessKeySecret = "<yourAccessKeySecret>";
  6. // 创建OSSClient实例
  7. OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
  8. BucketInfo info = ossClient.getBucketInfo("<yourBucketName>");
  9. // Location
  10. info.getBucket().getLocation();
  11. // 创建日期
  12. info.getBucket().getCreationDate();
  13. // owner
  14. info.getBucket().getOwner();
  15. // 权限
  16. info.getGrants();
  17. // 关闭client
  18. ossClient.shutdown();
本文导读目录