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

管理存储空间

更新时间:2018-05-27 23:07:35

创建存储空间

存储空间(Bucket)是您用于存储对象(Object)的容器,所有的对象都必须隶属于某个存储空间。以下代码用于新建一个存储空间:

  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. //新建Bucket权限默认是私有读写,标准存储类型。
  11. ossClient.createBucket(bucketName);
  12. // 关闭Client。
  13. ossClient.shutdown();

存储空间的命名规范,请参见基本概念中的命名规范。

以下代码用于创建Bucket时指定Bucket权限存储类型。请使用Java SDK 2.6.0及以上版本。

  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列表或符合指定条件的Bucket列表。如果Bucket有低频存储类型或归档存储类型,请使用Java SDK 2.6.0及以上版本。

简单列举存储空间

以下代码用于列举存储空间:

  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();

列举指定前缀的存储空间

以下代码用于列举包含指定前缀(Prefix)的存储空间,如果不指定前缀则不过滤前缀信息。

  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. }

列举指定Marker之后的存储空间

以下代码用于列举指定Marker之后的存储空间,限定此次结果从Marker之后按字母排序的第一个开始返回,不设定Marker则从头开始返回。

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

列举指定个数的存储空间

以下代码用于列举指定个数(Maxkeys)的存储空间,限定此次返回存储空间的最大数,取值不能大于1000。默认列举100个存储空间。

  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. }

判断存储空间是否存在

以下代码用于判断指定的存储空间是否存在:

  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();

设置存储空间的访问权限

存储空间的访问权限(ACL)有以下三类:

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

以下代码用于设置存储空间的访问权限:

  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();

获取存储空间的访问权限

以下代码用于获取存储空间的访问权限:

  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. AccessControlList acl = ossClient.getBucketAcl("<yourBucketName>");
  10. System.out.println(acl.toString());
  11. // 关闭Client。
  12. ossClient.shutdown();

获取存储空间的Location

存储空间的Location即地域(Region)。关于地域的详细信息请参见基本概念中的地域(Region)。

以下代码用于获取存储空间的地域:

  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();

获取存储空间的信息

以下代码用于获取存储空间的信息(Info),包括地域(Location)、创建时间(CreationDate)、拥有者(Owner)、权限(Grants)等。

  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();

删除存储空间

删除存储空间之前,必须先删除存储空间下的所有文件、分片上传产生的碎片及LiveChannel。以下代码用于删除存储空间:

  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();
本文导读目录