阅读892 返回首页    go 微信


管理Bucket__Java-SDK_SDK 参考_对象存储 OSS-阿里云

创建Bucket

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

// endpoint以杭州为例,其它region请按实际情况填写
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// accessKey请登录https://ak-console.aliyun.com/#/查看
String accessKeyId = "<yourAccessKeyId>";
String accessKeySecret = "<yourAccessKeySecret>";

// 创建OSSClient实例
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);

// 创建bucket
String bucketName = "<your-oss-bucket-name>";
ossClient.createBucket(bucketName);

// 关闭client
ossClient.shutdown();

提示:

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

上面代码创建的bucket,权限是私有读写。创建bucket时可以指定bucket权限,如下的示例代码:

CreateBucketRequest createBucketRequest= new CreateBucketRequest(bucketName);
// 设置bucket权限
createBucketRequest.setCannedACL(CannedAccessControlList.PublicRead);
ossClient.createBucket(createBucketRequest);

列举Bucket

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

简单列举

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

// endpoint以杭州为例,其它region请按实际情况填写
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// accessKey请登录https://ak-console.aliyun.com/#/查看
String accessKeyId = "<yourAccessKeyId>";
String accessKeySecret = "<yourAccessKeySecret>";

// 创建OSSClient实例
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);

// 列举bucket
List<Bucket> buckets = ossClient.listBuckets();
for (Bucket bucket : buckets) {
    System.out.println(" - " + bucket.getName());
}

// 关闭client
ossClient.shutdown();

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

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

指定前缀列举

ListBucketsRequest listBucketsRequest = new ListBucketsRequest();
listBucketsRequest.setPrefix("<yourBucketPrefix>");
for (Bucket bucket : ossClient.listBuckets()) {
    System.out.println(" - " + bucket.getName());
}

指定max keys列举

ListBucketsRequest listBucketsRequest = new ListBucketsRequest();
listBucketsRequest.setMaxKeys(500);
for (Bucket bucket : ossClient.listBuckets()) {
    System.out.println(" - " + bucket.getName());
}

删除Bucket

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

// endpoint以杭州为例,其它region请按实际情况填写
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// accessKey请登录https://ak-console.aliyun.com/#/查看
String accessKeyId = "<yourAccessKeyId>";
String accessKeySecret = "<yourAccessKeySecret>";

// 创建OSSClient实例
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);

// 删除bucket
ossClient.deleteBucket("<bucketName>");

// 关闭client
ossClient.shutdown();

提示:

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

判断Bucket是否存在

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

// endpoint以杭州为例,其它region请按实际情况填写
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// accessKey请登录https://ak-console.aliyun.com/#/查看
String accessKeyId = "<yourAccessKeyId>";
String accessKeySecret = "<yourAccessKeySecret>";

// 创建OSSClient实例
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);

boolean exists = ossClient.doesBucketExist("<bucketName>");

// 关闭client
ossClient.shutdown();

设置Bucket ACL

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

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

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

// endpoint以杭州为例,其它region请按实际情况填写
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// accessKey请登录https://ak-console.aliyun.com/#/查看
String accessKeyId = "<yourAccessKeyId>";
String accessKeySecret = "<yourAccessKeySecret>";

// 创建OSSClient实例
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);

// 设置bucket权限
ossClient.setBucketAcl("<bucketName>", CannedAccessControlList.Private);

// 关闭client
ossClient.shutdown();

获取Bucket ACL

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

// endpoint以杭州为例,其它region请按实际情况填写
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// accessKey请登录https://ak-console.aliyun.com/#/查看
String accessKeyId = "<yourAccessKeyId>";
String accessKeySecret = "<yourAccessKeySecret>";

// 创建OSSClient实例
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);

AccessControlList acl = ossClient.getBucketAcl("<bucketName>");
// bucket权限
System.out.println(acl.toString());

// 关闭client
ossClient.shutdown();

获取Bucket Location

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

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

// endpoint以杭州为例,其它region请按实际情况填写
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// accessKey请登录https://ak-console.aliyun.com/#/查看
String accessKeyId = "<yourAccessKeyId>";
String accessKeySecret = "<yourAccessKeySecret>";

// 创建OSSClient实例
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);

String location = ossClient.getBucketLocation("<bucketName>");
System.out.println(location);

// 关闭client
ossClient.shutdown();

获取Bucket Info

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

// endpoint以杭州为例,其它region请按实际情况填写
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// accessKey请登录https://ak-console.aliyun.com/#/查看
String accessKeyId = "<yourAccessKeyId>";
String accessKeySecret = "<yourAccessKeySecret>";

// 创建OSSClient实例
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);

BucketInfo info = ossClient.getBucketInfo("<bucketName>");
// Location
info.getBucket().getLocation();
// 创建日期
info.getBucket().getCreationDate();
// owner
info.getBucket().getOwner();
// 权限
info.getGrants();

// 关闭client
ossClient.shutdown();

最后更新:2016-11-23 16:04:10

  上一篇:go STS常见问题及排查__常见错误及排除_最佳实践_对象存储 OSS-阿里云
  下一篇:go 下载文件__Java-SDK_SDK 参考_对象存储 OSS-阿里云