本文中含有需要您注意的重要提示信息,忽略該信息可能對您的業務造成影響,請務必仔細閱讀。
本文介紹如何初始化Python SDK。
前提條件
初始化Python SDK前,您需要配置訪問憑證。詳情請參見配置訪問憑證。
背景信息
使用Python SDK時,大部分操作都是通過oss2.Service和oss2.Bucket兩個類進行。
oss2.Service類用于列舉存儲空間。
oss2.Bucket類用于上傳、下載、刪除文件以及對存儲空間進行各種配置。
初始化oss2.Service和oss2.Bucket兩個類時,需要指定Endpoint。其中oss2.Service類不支持自定義域名訪問。關于Endpoint的更多信息,請參見OSS地域和訪問域名和自定義訪問域名。
初始化oss2.Service類
具體操作,請參見列舉存儲空間。
初始化oss2.Bucket類
V4簽名(推薦)
推薦使用更安全的V4簽名算法。使用V4簽名初始化時,除指定Endpoint以外,您還需要指定阿里云通用Region ID作為發起請求地域的標識,示例值為cn-hangzhou
。同時聲明oss2.ProviderAuthV4。OSS Python SDK 2.18.4及以上版本支持V4簽名。
以使用OSS域名初始化時使用V4簽名為例,其他通過自定義域名、匿名初始化的場景可參考以下示例執行相應修改。
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# 從環境變量中獲取訪問憑證。運行本代碼示例之前,請先配置環境變量。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# 填寫Bucket所在地域對應的Endpoint。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com。
endpoint = 'yourEndpoint'
# 填寫Endpoint對應的Region信息,例如cn-hangzhou。
region = 'cn-hangzhou'
# 填寫Bucket名稱。
bucket = oss2.Bucket(auth, endpoint, 'examplebucket', region=region)
V1簽名(不推薦)
阿里云對象存儲OSS自2025年03月01日起不再對新用戶(即新UID )開放使用V1簽名,并將于2025年09月01日起停止更新與維護且不再對新增Bucket開放使用V1簽名。請盡快切換到V4簽名,避免影響服務。更多信息,請參見公告說明。
使用OSS域名初始化
以下代碼用于使用OSS域名初始化。關于不同地域的OSS域名,請參見OSS地域和訪問域名。
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# 從環境變量中獲取訪問憑證。運行本代碼示例之前,請先配置環境變量。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# yourEndpoint填寫Bucket所在地域對應的Endpoint。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com。
endpoint = 'yourEndpoint'
# 填寫Bucket名稱。
bucket = oss2.Bucket(auth, endpoint, 'examplebucket')
使用自定義域名初始化
以下代碼用于使用自定義域名初始化。關于使用自定義域名訪問OSS的更多信息,請參見綁定自定義域名至Bucket默認域名。
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# 從環境變量中獲取訪問憑證。運行本代碼示例之前,請先配置環境變量。
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# 填寫自定義域名,例如example.com。
cname = 'http://example.com'
# 填寫Bucket名稱,并設置is_cname=True來開啟CNAME。CNAME是指將自定義域名綁定到存儲空間。
bucket = oss2.Bucket(auth, cname, 'examplebucket', is_cname=True)
使用匿名訪問初始化
匿名用戶只能讀取public-read(公共讀)的Bucket以及讀取和寫入public-read-write(公共讀寫)的Bucket,不能進行Service相關的操作、Bucket相關的操作、列舉文件等。
假設examplebucket存儲空間的ACL為public-read-write,以下代碼用于使用匿名訪問初始化。
# -*- coding: utf-8 -*-
import oss2
# yourEndpoint填寫Bucket所在地域對應的Endpoint。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com。
endpoint = 'yourEndpoint'
# 填寫Bucket名稱,例如examplebucket。
bucket_name = 'examplebucket'
# 使用匿名訪問初始化。
bucket = oss2.Bucket(oss2.AnonymousAuth(), endpoint, bucket_name)
oss2.Bucket類支持配置的參數
初始化oss2.Bucket類時支持配置的參數請參見下表。
參數 | 示例值 | 描述 | 方法 |
is_cname | True | Endpoint是否為自定義域名。取值范圍如下:
| oss2.Bucket(auth, cname, 'examplebucket', is_cname=True) |
session | mytestsession | 會話名,默認值為None,表示新開會話。如果設置此參數為已有會話名,則復用傳入的會話。 | oss2.Bucket(auth, endpoint, 'examplebucket', session=oss2.Session()) |
connect_timeout | 30 | 連接超時時間,默認值為60,單位為秒。 | oss2.Bucket(auth, endpoint, 'examplebucket', connect_timeout=30) |
app_name | mytool | 應用名,默認值為空。如果此參數不為空,則在User Agent中加入對應值。 重要 由于該字符串會作為HTTP Header的值進行傳輸,因此該字符串必須遵循HTTP標準。 | oss2.Bucket(auth, endpoint, 'examplebucket', app_name='mytool') |
enable_crc | False | 是否開啟CRC數據校驗。
| oss2.Bucket(auth, endpoint, 'examplebucket', enable_crc=False) |
oss2.Bucket類配置示例
oss2.Bucket類常見配置示例如下。
設置連接超時時間
以下代碼用于設置連接超時時間。
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# 強烈建議不要把訪問憑證保存到工程代碼里,否則可能導致訪問憑證泄露,威脅您賬號下所有資源的安全。本代碼示例以從環境變量中獲取訪問憑證為例。運行本代碼示例之前,請先配置環境變量。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# 填寫Bucket所在地域對應的Endpoint。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# 填寫Endpoint對應的Region信息,例如cn-hangzhou。注意,v4簽名下,必須填寫該參數
region = "cn-hangzhou"
# 填寫Bucket名稱,并設置連接超時時間為30秒。
bucket = oss2.Bucket(auth, endpoint, 'examplebucket', connect_timeout=30,region=region)
關閉CRC數據校驗
上傳和下載文件時默認開啟CRC數據校驗,確保上傳和下載過程的數據完整性。
強烈建議不要關閉CRC數據校驗功能。如果關閉此功能,則阿里云不保證上傳和下載過程數據的完整性。
以下代碼用于關閉CRC數據校驗。
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# 強烈建議不要把訪問憑證保存到工程代碼里,否則可能導致訪問憑證泄露,威脅您賬號下所有資源的安全。本代碼示例以從環境變量中獲取訪問憑證為例。運行本代碼示例之前,請先配置環境變量。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# 填寫Bucket所在地域對應的Endpoint。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# 填寫Endpoint對應的Region信息,例如cn-hangzhou。注意,v4簽名下,必須填寫該參數
region = "cn-hangzhou"
# 填寫Bucket名稱,并設置enable_crc=False來關閉CRC數據校驗。
bucket = oss2.Bucket(auth, endpoint, 'examplebucket', enable_crc=False,region=region)
設置連接池大小
以下代碼用于設置連接池大小。
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# 強烈建議不要把訪問憑證保存到工程代碼里,否則可能導致訪問憑證泄露,威脅您賬號下所有資源的安全。本代碼示例以從環境變量中獲取訪問憑證為例。運行本代碼示例之前,請先配置環境變量。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# 填寫Bucket所在地域對應的Endpoint。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# 填寫Endpoint對應的Region信息,例如cn-hangzhou。注意,v4簽名下,必須填寫該參數
region = "cn-hangzhou"
# 設置連接池的大小,默認值為10。
session = oss2.Session(pool_size=20)
# 填寫Bucket名稱。
bucket = oss2.Bucket(auth, endpoint, 'examplebucket', session=session,region=region)
指定TLS版本
不同版本的TLS協議有不同的安全性和性能特點,請根據具體的應用場景選擇合適版本的TLS協議。
Python SDK 2.18.1及以上版本支持指定TLS版本。
以下代碼用于指定TLS版本為1.2。
# -*- coding: utf-8 -*-
import ssl
import oss2
from requests.adapters import HTTPAdapter
from oss2.credentials import EnvironmentVariableCredentialsProvider
# 從環境變量中獲取訪問憑證。運行本代碼示例之前,請先配置環境變量。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# 自定義ssl adapter。
class SSLAdapter(HTTPAdapter):
def init_poolmanager(self, *args, **kwargs):
# 設置TLS版本為1.2。
kwargs["ssl_version"] = ssl.PROTOCOL_TLSv1_2
return super().init_poolmanager(*args, **kwargs)
# 創建session對象,并通過session自定義adapter。
session = oss2.Session(adapter=SSLAdapter())
# 填寫Bucket所在地域對應的Endpoint。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# 填寫Endpoint對應的Region信息,例如cn-hangzhou。注意,v4簽名下,必須填寫該參數
region = "cn-hangzhou"
# 填寫Bucket名稱,例如examplebucket。
bucket = oss2.Bucket(auth, endpoint, 'examplebucket', session=session, region=region)
# 上傳文件。
bucket.put_object("example.txt", "hello")
后續步驟
初始化Python SDK后,您可以使用oss2發起請求。詳情請參見快速入門。