閱讀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-阿裏雲