全部產品
Search
文件中心

Object Storage Service:管理儲存空間

更新時間:Aug 30, 2018

儲存空間(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. // 建立儲存空間。
  9. String bucketName = "<yourBucketName>";
  10. // 新建儲存空間預設為標準儲存類型,私有許可權。
  11. ossClient.createBucket(bucketName);
  12. // 關閉OSSClient。
  13. ossClient.shutdown();

儲存空間的命名規範,請參見基本概念中的命名規範。

您可以在建立儲存空間時指定儲存空間的許可權儲存類型。如果需要建立低頻或歸檔類型的儲存空間,請使用Java SDK 2.6.0及以上版本。範例程式碼如下:

  1. CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucketName);
  2. // 設定儲存空間的許可權為公共讀,預設是私有。
  3. createBucketRequest.setCannedACL(CannedAccessControlList.PublicRead);
  4. // 設定儲存空間的儲存類型為低頻訪問類型,預設是標準類型。
  5. createBucketRequest.setStorageClass(StorageClass.IA);
  6. ossClient.createBucket(createBucketRequest);

列舉儲存空間

儲存空間按照字母順序排列。您可以列舉所有的儲存空間,或符合指定條件的儲存空間。如果有低頻類型或歸檔類型的儲存空間,請使用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. // 列舉儲存空間。
  9. List<Bucket> buckets = ossClient.listBuckets();
  10. for (Bucket bucket : buckets) {
  11. System.out.println(" - " + bucket.getName());
  12. }
  13. // 關閉OSSClient。
  14. ossClient.shutdown();

列舉指定首碼的儲存空間

以下代碼用於列舉包含指定首碼(prefix)的儲存空間:

  1. ListBucketsRequest listBucketsRequest = new ListBucketsRequest();
  2. // 列舉指定首碼的儲存空間。
  3. listBucketsRequest.setPrefix("<yourBucketPrefix>");
  4. BucketList bucketList = ossClient.listBuckets(listBucketsRequest);
  5. for (Bucket bucket : bucketList.getBucketList()) {
  6. System.out.println(" - " + bucket.getName());
  7. }

列舉指定marker之後的儲存空間

參數marker代表格儲存體空間名稱。以下代碼用於列舉指定marker之後的儲存空間:

  1. ListBucketsRequest listBucketsRequest = new ListBucketsRequest();
  2. // 列舉指定marker之後的儲存空間。
  3. listBucketsRequest.setMarker("<yourBucketMarker>");
  4. BucketList bucketList = ossClient.listBuckets(listBucketsRequest);
  5. for (Bucket bucket : bucketList.getBucketList()) {
  6. System.out.println(" - " + bucket.getName());
  7. }

列舉指定個數的儲存空間

以下代碼用於列舉指定個數(maxKeys)的儲存空間:

  1. ListBucketsRequest listBucketsRequest = new ListBucketsRequest();
  2. // 限定此次列舉儲存空間的個數為500。預設值為100,最大值為1000。
  3. listBucketsRequest.setMaxKeys(500);
  4. BucketList bucketList = ossClient.listBuckets(listBucketsRequest);
  5. for (Bucket bucket : bucketList.getBucketList()) {
  6. System.out.println(" - " + bucket.getName());
  7. }

判斷儲存空間是否存在

以下代碼用於判斷指定的儲存空間是否存在:

  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. // 關閉OSSClient。
  10. ossClient.shutdown();

設定儲存空間的存取權限

儲存空間的存取權限(ACL)有以下三類:

存取權限 描述 存取權限值
私有 儲存空間的擁有者和授權使用者有該儲存空間內的檔案的讀寫權限,其他使用者沒有許可權操作該儲存空間內的檔案。 CannedAccessControlList.Private
公共讀 儲存空間的擁有者和授權使用者有該儲存空間內的檔案的讀寫權限,其他使用者只有該儲存空間內的檔案的讀許可權。請謹慎使用該許可權。 CannedAccessControlList.PublicRead
公共讀寫 所有使用者都有該儲存空間內的檔案的讀寫權限。請謹慎使用該許可權。 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. // 設定儲存空間的存取權限為私有。
  9. ossClient.setBucketAcl("<yourBucketName>", CannedAccessControlList.Private);
  10. // 關閉OSSClient。
  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. // 獲取儲存空間的存取權限。
  9. AccessControlList acl = ossClient.getBucketAcl("<yourBucketName>");
  10. System.out.println(acl.toString());
  11. // 關閉OSSClient。
  12. ossClient.shutdown();

獲取儲存空間的地域

以下代碼用於獲取儲存空間的地域(稱為Region或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. // 關閉OSSClient。
  11. ossClient.shutdown();

關於地域的詳細資料請參見基本概念中的地域。

獲取儲存空間的資訊

以下代碼用於獲取儲存空間的資訊(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. // 儲存空間的資訊包括地域(Region或Location)、建立日期(CreationDate)、擁有者(Owner)、許可權(Grants)等。
  9. BucketInfo info = ossClient.getBucketInfo("<yourBucketName>");
  10. // 獲取地域。
  11. info.getBucket().getLocation();
  12. // 獲取建立日期。
  13. info.getBucket().getCreationDate();
  14. // 獲取擁有者資訊。
  15. info.getBucket().getOwner();
  16. // 獲取許可權資訊。
  17. info.getGrants();
  18. // 關閉OSSClient。
  19. ossClient.shutdown();

刪除儲存空間

刪除儲存空間之前,必須先刪除儲存空間下的所有檔案、LiveChannel和分區上傳產生的碎片。

說明:要刪除分區上傳產生的碎片,首先使用Bucket.ListMultipartUploads列舉出所有碎片,然後使用Bucket.AbortMultipartUpload刪除這些碎片。

以下代碼用於刪除儲存空間:

  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. // 刪除儲存空間。
  9. ossClient.deleteBucket("<yourBucketName>");
  10. // 關閉OSSClient。
  11. ossClient.shutdown();