儲存空間(Bucket)是儲存物件(Object)的容器。對象都隸屬於儲存空間。
建立儲存空間
以下代碼用於新建儲存空間:
# -*- coding: utf-8 -*-
import oss2
# 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>')
# 通過指定Endpoint和儲存空間名稱,您可以在指定的地域建立新的儲存空間。Endpoint以杭州為例,其它Region請按實際情況填寫。
bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', '<yourBucketName>')
# 新建儲存空間預設為標準儲存類型,私有存取權限。
bucket.create_bucket()
儲存空間的命名規範,請參見基本概念中的命名規範。
您可以在建立儲存空間時指定儲存空間的許可權和儲存類型。範例程式碼如下:
# 設定儲存空間的儲存類型為低頻訪問類型,存取權限為公共讀。
bucket.create_bucket(oss2.BUCKET_ACL_PUBLIC_READ, oss2.models.BucketCreateConfig(oss2.BUCKET_STORAGE_CLASS_IA))
列舉儲存空間
以下代碼用於列舉儲存空間:
# -*- coding: utf-8 -*-
import oss2
# 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>')
# Endpoint以杭州為例,其它Region請按實際情況填寫。
service = oss2.Service(auth, 'http://oss-cn-hangzhou.aliyuncs.com')
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 |
以下代碼用於設定儲存空間的存取權限:
# -*- coding: utf-8 -*-
import oss2
# 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>')
# Endpoint以杭州為例,其它Region請按實際情況填寫。
bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', '<yourBucketName>')
# 設定儲存空間存取權限為私有。
bucket.put_bucket_acl(oss2.BUCKET_ACL_PRIVATE)
獲取儲存空間的存取權限
以下代碼用於獲取儲存空間的存取權限:
# -*- coding: utf-8 -*-
import oss2
# 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>')
# Endpoint以杭州為例,其它Region請按實際情況填寫。
bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', '<yourBucketName>')
print(bucket.get_bucket_acl().acl)
獲取儲存空間的資訊
以下代碼用於獲取儲存空間的資訊(Info):
# -*- coding: utf-8 -*-
import oss2
# 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>')
# Endpoint以杭州為例,其它Region請按實際情況填寫。
bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', '<yourBucketName>')
# 獲取儲存空間相關資訊
bucket_info = bucket.get_bucket_info()
print('name: ' + bucket_info.name)
print('storage class: ' + bucket_info.storage_class)
print('creation date: ' + bucket_info.creation_date)
print('intranet_endpoint: ' + bucket_info.intranet_endpoint)
print('extranet_endpoint ' + bucket_info.extranet_endpoint)
print('owner: ' + bucket_info.owner.id)
print('grant: ' + bucket_info.acl.grant)
刪除儲存空間
刪刪除儲存空間之前,必須先刪除儲存空間下的所有檔案、LiveChannel和分區上傳產生的碎片。
說明:要刪除分區上傳產生的碎片,首先使用Bucket.ListMultipartUploads列舉出所有碎片,然後使用Bucket.AbortMultipartUpload刪除這些碎片。
以下代碼用於刪除儲存空間:
# -*- coding: utf-8 -*-
import oss2
# 阿里雲主帳號AccessKey擁有所有API的存取權限,風險很高。強烈建議您建立並使用RAM帳號進行API訪問或日常運維,請登入 https://ram.console.aliyun.com 建立RAM帳號。
auth = oss2.Auth('<yourAccessKeyId>', '<yourAccessKeySecret>')
# Endpoint以杭州為例,其它Region請按實際情況填寫。
bucket = oss2.Bucket(auth, 'http://oss-cn-hangzhou.aliyuncs.com', '<yourBucketName>')
try:
# 刪除儲存空間。
bucket.delete_bucket()
except oss2.exceptions.BucketNotEmpty:
print('bucket is not empty.')
except oss2.exceptions.NoSuchBucket:
print('bucket does not exist')
對於非空的儲存空間,可以通過邊列舉邊刪除(對於分區上傳則是終止上傳)的方法清空儲存空間,然後再刪除。