Python綁定自定義域名
文件(Object)上傳至存儲空間(Bucket)后,OSS會(huì)自動(dòng)生成文件URL,您可以直接通過文件URL(即Bucket外網(wǎng)訪問域名)訪問該文件。如果您希望通過自定義域名訪問這些Object,需要添加CNAME記錄將自定義域名綁定至Object所在的Bucket。
注意事項(xiàng)
本文以華東1(杭州)外網(wǎng)Endpoint為例。如果您希望通過與OSS同地域的其他阿里云產(chǎn)品訪問OSS,請使用內(nèi)網(wǎng)Endpoint。關(guān)于OSS支持的Region與Endpoint的對應(yīng)關(guān)系,請參見OSS地域和訪問域名。
本文以從環(huán)境變量讀取訪問憑證為例。如何配置訪問憑證,請參見配置訪問憑證。
本文以OSS域名新建OSSClient為例。如果您希望通過自定義域名、STS等方式新建OSSClient,請參見初始化。
創(chuàng)建CnameToken
以下代碼用于創(chuàng)建CnameToken。
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# 從環(huán)境變量中獲取訪問憑證。運(yùn)行本代碼示例之前,請確保已設(shè)置環(huán)境變量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# 填寫B(tài)ucket所在地域?qū)?yīng)的Endpoint。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# 填寫Endpoint對應(yīng)的Region信息,例如cn-hangzhou。注意,v4簽名下,必須填寫該參數(shù)
region = "cn-hangzhou"
# examplebucket填寫存儲空間名稱。
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)
# 填寫自定義域名。
test_domain = 'www.example.com'
# 創(chuàng)建CnameToken。
result = bucket.create_bucket_cname_token(test_domain)
# 打印綁定的Cname名稱。
print(result.cname)
# 打印OSS返回的CnameToken。
print(result.token)
# 打印CnameToken的過期時(shí)間。
print(result.expire_time)
獲取CnameToken
以下代碼用于獲取CnameToken。
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# 從環(huán)境變量中獲取訪問憑證。運(yùn)行本代碼示例之前,請確保已設(shè)置環(huán)境變量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# 填寫B(tài)ucket所在地域?qū)?yīng)的Endpoint。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# 填寫Endpoint對應(yīng)的Region信息,例如cn-hangzhou。注意,v4簽名下,必須填寫該參數(shù)
region = "cn-hangzhou"
# examplebucket填寫存儲空間名稱。
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)
# 填寫自定義域名。
test_domain = 'www.example.com'
# 獲取CnameToken。
result = bucket.get_bucket_cname_token(test_domain)
# 打印綁定的Cname名稱。
print(result.cname)
# 打印OSS返回的CnameToken。
print(result.token)
# 打印CnameToken的過期時(shí)間。
print(result.expire_time)
添加CNAME記錄
以下代碼用于添加CNAME記錄。
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# 從環(huán)境變量中獲取訪問憑證。運(yùn)行本代碼示例之前,請確保已設(shè)置環(huán)境變量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# 填寫B(tài)ucket所在地域?qū)?yīng)的Endpoint。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# 填寫Endpoint對應(yīng)的Region信息,例如cn-hangzhou。注意,v4簽名下,必須填寫該參數(shù)
region = "cn-hangzhou"
# examplebucket填寫存儲空間名稱。
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)
# 填寫自定義域名。
test_domain = 'www.example.com'
# 填寫舊版證書ID。
previous_cert_id = '001'
certificate = '''-----BEGIN CERTIFICATE-----
MIIDWzCCAkOgA******KTgnwyOGU9cv+mxA=
-----END CERTIFICATE-----'''
# 設(shè)置證書私鑰。
private_key = '''-----BEGIN PRIVATE KEY-----
MIIEvQIBADAN******1i2t41Q/SC3HUGC5mJjpO8=
-----END PRIVATE KEY-----
'''
cert = oss2.models.CertInfo(certificate=certificate, private_key=private_key)
# 通過force=True設(shè)置強(qiáng)制覆蓋舊版證書。
# 通過delete_certificate選擇是否刪除證書。設(shè)置為delete_certificate=True表示刪除證書,設(shè)置為delete_certificate=False表示不刪除證書。
# cert = oss2.models.CertInfo(certificate=certificate, private_key=private_key, force=True, delete_certificate=False)
input = oss2.models.PutBucketCnameRequest(test_domain, cert)
bucket.put_bucket_cname(input)
查看CNAME記錄
以下代碼用于查看CNAME記錄。
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# 從環(huán)境變量中獲取訪問憑證。運(yùn)行本代碼示例之前,請確保已設(shè)置環(huán)境變量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# 填寫B(tài)ucket所在地域?qū)?yīng)的Endpoint。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# 填寫Endpoint對應(yīng)的Region信息,例如cn-hangzhou。注意,v4簽名下,必須填寫該參數(shù)
region = "cn-hangzhou"
# examplebucket填寫存儲空間名稱。
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)
list_result = bucket.list_bucket_cname()
for c in list_result.cname:
# 打印證書ID。
print(c.certificate.cert_id)
# 打印證書來源。
print(c.certificate.type)
# 打印證書狀態(tài)。
print(c.certificate.status)
# 打印自定義域名。
print(c.domain)
# 打印綁定自定義域名的時(shí)間。
print(c.last_modified)
# 打印域名所處狀態(tài)。
print(c.status)
刪除CNAME記錄
以下代碼用于刪除CNAME記錄。
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# 從環(huán)境變量中獲取訪問憑證。運(yùn)行本代碼示例之前,請確保已設(shè)置環(huán)境變量OSS_ACCESS_KEY_ID和OSS_ACCESS_KEY_SECRET。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# 填寫B(tài)ucket所在地域?qū)?yīng)的Endpoint。以華東1(杭州)為例,Endpoint填寫為https://oss-cn-hangzhou.aliyuncs.com。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# 填寫Endpoint對應(yīng)的Region信息,例如cn-hangzhou。注意,v4簽名下,必須填寫該參數(shù)
region = "cn-hangzhou"
# examplebucket填寫存儲空間名稱。
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)
# 填寫自定義域名。
test_domain = 'www.example.com'
# 刪除CNAME記錄。
bucket.delete_bucket_cname(test_domain)
相關(guān)文檔
關(guān)于創(chuàng)建域名所有權(quán)驗(yàn)證所需的CnameToken的API接口說明,請參見CreateCnameToken。
關(guān)于獲取CnameToken的API接口說明,請參見GetCnameToken。
關(guān)于添加CNAME記錄的API接口說明,請參見PutCname。
關(guān)于查看CNAME記錄的API接口說明,請參見ListCname。
關(guān)于刪除CNAME記錄的API接口說明,請參見DeleteCname。