本文介紹如何列舉當前帳號所有地區下符合指定條件的儲存空間。
注意事項
本文範例程式碼以華東1(杭州)的地區ID
cn-hangzhou為例,預設使用外網Endpoint,如果您希望通過與OSS同地區的其他阿里雲產品訪問OSS,請使用內網Endpoint。關於OSS支援的Region與Endpoint的對應關係,請參見OSS地區和訪問網域名稱。本文以從環境變數讀取存取憑證為例。如何配置訪問憑證,請參見配置訪問憑證。
要列舉儲存空間,您必須具有
oss:ListBuckets許可權。具體操作,請參見為RAM使用者授予自訂的權限原則.使用SDK列舉儲存空間時,可以通過指定資源群組ID來篩選特定資源群組下的Bucket。
使用SDK列舉儲存空間時預設不攜帶資源群組ID參數,返回結果的XML裡也不會攜帶資源群組相關資訊。
如果在請求中攜帶資源群組ID參數,則OSS會返回屬於該資源群組的所有Bucket。
如果在請求中未攜帶資源群組ID參數,則OSS會返回要求者擁有的所有Bucket。
範例程式碼
您可以使用以下代碼列舉當前帳號所有地區下的儲存空間。
import argparse
import alibabacloud_oss_v2 as oss
# 建立命令列參數解析器,並描述指令碼用途:樣本展示如何列出OSS中的所有儲存空間
parser = argparse.ArgumentParser(description="list buckets sample")
# 添加命令列參數 --region,表示儲存空間所在的地區,必需參數
parser.add_argument('--region', help='The region in which the bucket is located.', required=True)
# 添加命令列參數 --endpoint,表示其他服務可用來訪問OSS的網域名稱,非必需參數
parser.add_argument('--endpoint', help='The domain names that other services can use to access OSS')
def main():
# 解析命令列提供的參數,擷取使用者輸入的值
args = parser.parse_args()
# 從環境變數中載入訪問OSS所需的認證資訊,用於身分識別驗證
credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
# 使用SDK的預設配置建立設定物件,並設定認證提供者
cfg = oss.config.load_default()
cfg.credentials_provider = credentials_provider
cfg.region = args.region
# 如果提供了自訂endpoint,則更新設定物件中的endpoint屬性
if args.endpoint is not None:
cfg.endpoint = args.endpoint
# 使用上述配置初始化OSS用戶端,準備與OSS互動
client = oss.Client(cfg)
# 建立ListBuckets操作的分頁器(Paginator),以便處理大量儲存空間
paginator = client.list_buckets_paginator()
# 遍曆分頁結果
for page in paginator.iter_page(oss.ListBucketsRequest()):
# 對於每一頁中的每一個儲存空間,列印其名稱、位置、建立日期
for o in page.buckets:
print(f'Bucket: {o.name}, Location: {o.location}, Created: {o.creation_date}')
# 當此指令碼被直接執行時,調用main函數開始處理邏輯
if __name__ == "__main__":
main() # 指令碼進入點,控製程序流程從這裡開始常見使用情境
相關文檔
關於列舉儲存空間的完整範例程式碼,請參見list_buckets.py。