全部產品
Search
文件中心

Object Storage Service:管理儲存空間

更新時間:Aug 30, 2018

儲存空間(Bucket)是儲存物件(Object)的容器。對象都隸屬於儲存空間。

建立儲存空間

以下代碼用於新建儲存空間:

  1. # -*- coding: utf-8 -*-
  2. import oss2
  3. # 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
  4. auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>')
  5. # 通過指定Endpoint和儲存空間名稱,您可以在指定的地域建立新的儲存空間。Endpoint以杭州為例,其它Region請按實際情況填寫。
  6. bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', '<yourBucketName>')
  7. # 新建儲存空間預設為標準儲存類型,私有存取權限。
  8. bucket.create_bucket()

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

您可以在建立儲存空間時指定儲存空間的許可權儲存類型。範例程式碼如下:

  1. # 設定儲存空間的儲存類型為低頻訪問類型,存取權限為公共讀。
  2. bucket.create_bucket(oss2.BUCKET_ACL_PUBLIC_READ, oss2.models.BucketCreateConfig(oss2.BUCKET_STORAGE_CLASS_IA))

列舉儲存空間

以下代碼用於列舉儲存空間:

  1. # -*- coding: utf-8 -*-
  2. import oss2
  3. # 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
  4. auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>')
  5. # Endpoint以杭州為例,其它Region請按實際情況填寫。
  6. service = oss2.Service(auth, 'http://oss-cn-hangzhou.aliyuncs.com')
  7. print([b.name for b in oss2.BucketIterator(service)])

設定儲存空間的存取權限

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

存取權限 描述 存取權限值
私有 儲存空間的擁有者和授權使用者有該儲存空間內的檔案的讀寫權限,其他使用者沒有許可權操作該儲存空間內的檔案。 oss2.BUCKET_ACL_PRIVATE
公共讀 儲存空間的擁有者和授權使用者有該儲存空間內的檔案的讀寫權限,其他使用者只有該儲存空間內的檔案的讀許可權。請謹慎使用該許可權。 oss2.BUCKET_ACL_PUBLIC_READ
公共讀寫 所有使用者都有該儲存空間內的檔案的讀寫權限。請謹慎使用該許可權。 oss2.BUCKET_ACL_PUBLIC_READ_WRITE

以下代碼用於設定儲存空間的存取權限:

  1. # -*- coding: utf-8 -*-
  2. import oss2
  3. # 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
  4. auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>')
  5. # Endpoint以杭州為例,其它Region請按實際情況填寫。
  6. bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', '<yourBucketName>')
  7. # 設定儲存空間存取權限為私有。
  8. bucket.put_bucket_acl(oss2.BUCKET_ACL_PRIVATE)

獲取儲存空間的存取權限

以下代碼用於獲取儲存空間的存取權限:

  1. # -*- coding: utf-8 -*-
  2. import oss2
  3. # 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
  4. auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>')
  5. # Endpoint以杭州為例,其它Region請按實際情況填寫。
  6. bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', '<yourBucketName>')
  7. print(bucket.get_bucket_acl().acl)

獲取儲存空間的資訊

以下代碼用於獲取儲存空間的資訊(Info):

  1. # -*- coding: utf-8 -*-
  2. import oss2
  3. # 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
  4. auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>')
  5. # Endpoint以杭州為例,其它Region請按實際情況填寫。
  6. bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', '<yourBucketName>')
  7. # 獲取儲存空間相關資訊
  8. bucket_info = bucket.get_bucket_info()
  9. print('name: ' + bucket_info.name)
  10. print('storage class: ' + bucket_info.storage_class)
  11. print('creation date: ' + bucket_info.creation_date)
  12. print('intranet_endpoint: ' + bucket_info.intranet_endpoint)
  13. print('extranet_endpoint ' + bucket_info.extranet_endpoint)
  14. print('owner: ' + bucket_info.owner.id)
  15. print('grant: ' + bucket_info.acl.grant)

刪除儲存空間

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

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

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

  1. # -*- coding: utf-8 -*-
  2. import oss2
  3. # 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
  4. auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>')
  5. # Endpoint以杭州為例,其它Region請按實際情況填寫。
  6. bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', '<yourBucketName>')
  7. try:
  8. # 刪除儲存空間。
  9. bucket.delete_bucket()
  10. except oss2.exceptions.BucketNotEmpty:
  11. print('bucket is not empty.')
  12. except oss2.exceptions.NoSuchBucket:
  13. print('bucket does not exist')

對於非空的儲存空間,可以通過邊列舉邊刪除(對於分區上傳則是終止上傳)的方法清空儲存空間,然後再刪除。