儲存空間(Bucket)是儲存物件(Object)的容器。對象都隸屬於儲存空間。
建立儲存空間
以下代碼用於建立儲存空間:
// Endpoint以杭州為例,其它Region請按實際情況填寫。
String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
String accessKeyId = "<yourAccessKeyId>";
String accessKeySecret = "<yourAccessKeySecret>";
// 建立OSSClient執行個體。
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
// 建立儲存空間。
String bucketName = "<yourBucketName>";
// 新建儲存空間預設為標準儲存類型,私有許可權。
ossClient.createBucket(bucketName);
// 關閉OSSClient。
ossClient.shutdown();
儲存空間的命名規範,請參見基本概念中的命名規範。
您可以在建立儲存空間時指定儲存空間的許可權和儲存類型。如果需要建立低頻或歸檔類型的儲存空間,請使用Java SDK 2.6.0及以上版本。範例程式碼如下:
CreateBucketRequest createBucketRequest = new CreateBucketRequest(bucketName);
// 設定儲存空間的許可權為公共讀,預設是私有。
createBucketRequest.setCannedACL(CannedAccessControlList.PublicRead);
// 設定儲存空間的儲存類型為低頻訪問類型,預設是標準類型。
createBucketRequest.setStorageClass(StorageClass.IA);
ossClient.createBucket(createBucketRequest);
列舉儲存空間
儲存空間按照字母順序排列。您可以列舉所有的儲存空間,或符合指定條件的儲存空間。如果有低頻類型或歸檔類型的儲存空間,請使用Java SDK 2.6.0及以上版本。
列舉所有的儲存空間
以下代碼用於列舉所有的儲存空間:
// Endpoint以杭州為例,其它Region請按實際情況填寫。
String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
String accessKeyId = "<yourAccessKeyId>";
String accessKeySecret = "<yourAccessKeySecret>";
// 建立OSSClient執行個體。
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
// 列舉儲存空間。
List<Bucket> buckets = ossClient.listBuckets();
for (Bucket bucket : buckets) {
System.out.println(" - " + bucket.getName());
}
// 關閉OSSClient。
ossClient.shutdown();
列舉指定首碼的儲存空間
以下代碼用於列舉包含指定首碼(prefix)的儲存空間:
ListBucketsRequest listBucketsRequest = new ListBucketsRequest();
// 列舉指定首碼的儲存空間。
listBucketsRequest.setPrefix("<yourBucketPrefix>");
BucketList bucketList = ossClient.listBuckets(listBucketsRequest);
for (Bucket bucket : bucketList.getBucketList()) {
System.out.println(" - " + bucket.getName());
}
列舉指定marker之後的儲存空間
參數marker代表格儲存體空間名稱。以下代碼用於列舉指定marker之後的儲存空間:
ListBucketsRequest listBucketsRequest = new ListBucketsRequest();
// 列舉指定marker之後的儲存空間。
listBucketsRequest.setMarker("<yourBucketMarker>");
BucketList bucketList = ossClient.listBuckets(listBucketsRequest);
for (Bucket bucket : bucketList.getBucketList()) {
System.out.println(" - " + bucket.getName());
}
列舉指定個數的儲存空間
以下代碼用於列舉指定個數(maxKeys)的儲存空間:
ListBucketsRequest listBucketsRequest = new ListBucketsRequest();
// 限定此次列舉儲存空間的個數為500。預設值為100,最大值為1000。
listBucketsRequest.setMaxKeys(500);
BucketList bucketList = ossClient.listBuckets(listBucketsRequest);
for (Bucket bucket : bucketList.getBucketList()) {
System.out.println(" - " + bucket.getName());
}
判斷儲存空間是否存在
以下代碼用於判斷指定的儲存空間是否存在:
// Endpoint以杭州為例,其它Region請按實際情況填寫。
String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
String accessKeyId = "<yourAccessKeyId>";
String accessKeySecret = "<yourAccessKeySecret>";
// 建立OSSClient執行個體。
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
boolean exists = ossClient.doesBucketExist("<yourBucketName>");
// 關閉OSSClient。
ossClient.shutdown();
設定儲存空間的存取權限
儲存空間的存取權限(ACL)有以下三類:
存取權限 | 描述 | 存取權限值 |
---|---|---|
私有 | 儲存空間的擁有者和授權使用者有該儲存空間內的檔案的讀寫權限,其他使用者沒有許可權操作該儲存空間內的檔案。 | CannedAccessControlList.Private |
公共讀 | 儲存空間的擁有者和授權使用者有該儲存空間內的檔案的讀寫權限,其他使用者只有該儲存空間內的檔案的讀許可權。請謹慎使用該許可權。 | CannedAccessControlList.PublicRead |
公共讀寫 | 所有使用者都有該儲存空間內的檔案的讀寫權限。請謹慎使用該許可權。 | CannedAccessControlList.PublicReadWrite |
以下代碼用於設定儲存空間的存取權限:
// Endpoint以杭州為例,其它Region請按實際情況填寫。
String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
String accessKeyId = "<yourAccessKeyId>";
String accessKeySecret = "<yourAccessKeySecret>";
// 建立OSSClient執行個體。
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
// 設定儲存空間的存取權限為私有。
ossClient.setBucketAcl("<yourBucketName>", CannedAccessControlList.Private);
// 關閉OSSClient。
ossClient.shutdown();
獲取儲存空間的存取權限
以下代碼用於獲取儲存空間的存取權限:
// Endpoint以杭州為例,其它Region請按實際情況填寫。
String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
String accessKeyId = "<yourAccessKeyId>";
String accessKeySecret = "<yourAccessKeySecret>";
// 建立OSSClient執行個體。
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
// 獲取儲存空間的存取權限。
AccessControlList acl = ossClient.getBucketAcl("<yourBucketName>");
System.out.println(acl.toString());
// 關閉OSSClient。
ossClient.shutdown();
獲取儲存空間的地域
以下代碼用於獲取儲存空間的地域(稱為Region或Location):
// Endpoint以杭州為例,其它Region請按實際情況填寫。
String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
String accessKeyId = "<yourAccessKeyId>";
String accessKeySecret = "<yourAccessKeySecret>";
// 建立OSSClient執行個體。
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
String location = ossClient.getBucketLocation("<yourBucketName>");
System.out.println(location);
// 關閉OSSClient。
ossClient.shutdown();
關於地域的詳細資料請參見基本概念中的地域。
獲取儲存空間的資訊
以下代碼用於獲取儲存空間的資訊(Info):
// Endpoint以杭州為例,其它Region請按實際情況填寫。
String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
String accessKeyId = "<yourAccessKeyId>";
String accessKeySecret = "<yourAccessKeySecret>";
// 建立OSSClient執行個體。
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
// 儲存空間的資訊包括地域(Region或Location)、建立日期(CreationDate)、擁有者(Owner)、許可權(Grants)等。
BucketInfo info = ossClient.getBucketInfo("<yourBucketName>");
// 獲取地域。
info.getBucket().getLocation();
// 獲取建立日期。
info.getBucket().getCreationDate();
// 獲取擁有者資訊。
info.getBucket().getOwner();
// 獲取許可權資訊。
info.getGrants();
// 關閉OSSClient。
ossClient.shutdown();
刪除儲存空間
刪除儲存空間之前,必須先刪除儲存空間下的所有檔案、LiveChannel和分區上傳產生的碎片。
說明:要刪除分區上傳產生的碎片,首先使用Bucket.ListMultipartUploads列舉出所有碎片,然後使用Bucket.AbortMultipartUpload刪除這些碎片。
以下代碼用於刪除儲存空間:
// Endpoint以杭州為例,其它Region請按實際情況填寫。
String endpoint = "http://oss-cn-hangzhou.aliyuncs.com";
// 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
String accessKeyId = "<yourAccessKeyId>";
String accessKeySecret = "<yourAccessKeySecret>";
// 建立OSSClient執行個體。
OSSClient ossClient = new OSSClient(endpoint, accessKeyId, accessKeySecret);
// 刪除儲存空間。
ossClient.deleteBucket("<yourBucketName>");
// 關閉OSSClient。
ossClient.shutdown();