文件(Object)上传至存储空间(Bucket)后,OSS会自动生成文件URL,您可以直接通过文件URL(即Bucket外网访问域名)访问该文件。如果您希望通过自定义域名访问这些Object,需要添加CNAME记录将自定义域名绑定至Object所在的Bucket。

创建CnameToken

以下代码用于创建CnameToken。

# -*- coding: utf-8 -*-
import oss2

# 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
auth = oss2.Auth('yourAccessKeyId', 'yourAccessKeySecret')

# yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
# 填写Bucket名称,例如examplebucket。
bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', 'examplebucket')

# 填写自定义域名。
test_domain = 'www.example.com'
# 创建CnameToken。
result = bucket.create_bucket_cname_token(test_domain)
# 打印绑定的Cname名称。
print(result.cname)
# 打印OSS返回的CnameToken。
print(result.token)
# 打印CnameToken的过期时间。
print(result.expire_time)

获取CnameToken

以下代码用于获取CnameToken。

# -*- coding: utf-8 -*-
import oss2
# 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
auth = oss2.Auth('yourAccessKeyId', 'yourAccessKeySecret')

# yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
# 填写Bucket名称,例如examplebucket。
bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', 'examplebucket')

# 填写自定义域名。
test_domain = 'www.example.com'
# 获取CnameToken。
result = bucket.bucket.get_bucket_cname_token(test_domain)
# 打印绑定的Cname名称。
print(result.cname)
# 打印OSS返回的CnameToken。
print(result.token)
# 打印CnameToken的过期时间。
print(result.expire_time)

添加CNAME记录

以下代码用于添加CNAME记录。

# -*- coding: utf-8 -*-
import oss2

# 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
auth = oss2.Auth('yourAccessKeyId', 'yourAccessKeySecret')

# yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
# 填写Bucket名称,例如examplebucket。
bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', 'examplebucket')

# 填写自定义域名。
test_domain = 'www.example.com'
# 填写旧版证书ID。
previous_cert_id = '001'
certificate = '''-----BEGIN CERTIFICATE-----
MIIDWzCCAkOgA******KTgnwyOGU9cv+mxA=
-----END CERTIFICATE-----'''
# 设置证书私钥。
private_key = '''-----BEGIN PRIVATE KEY-----
MIIEvQIBADAN******1i2t41Q/SC3HUGC5mJjpO8=
-----END PRIVATE KEY-----
'''

cert = oss2.models.CertInfo(certificate=certificate, private_key=private_key)
# 通过force=True设置强制覆盖旧版证书。
# 通过delete_certificate选择是否删除证书。设置为delete_certificate=True表示删除证书,设置为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
# 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
auth = oss2.Auth('yourAccessKeyId', 'yourAccessKeySecret')

# yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
# 填写Bucket名称,例如examplebucket。
bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', 'examplebucket')

list_result = bucket.list_bucket_cname()
for c in list_result.cname:
    # 打印证书ID。
    print(c.certificate.cert_id)
    # 打印证书来源。
    print(c.certificate.type)
    # 打印证书状态。
    print(c.certificate.status)
    # 打印自定义域名。
    print(c.domain)
    # 打印绑定自定义域名的时间。
    print(c.last_modified)
    # 打印域名所处状态。
    print(c.status)

删除CNAME记录

以下代码用于删除CNAME记录。

# -*- coding: utf-8 -*-
import oss2
# 阿里云账号AccessKey拥有所有API的访问权限,风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维,请登录RAM控制台创建RAM用户。
auth = oss2.Auth('yourAccessKeyId', 'yourAccessKeySecret')

# yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1(杭州)为例,Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
# 填写Bucket名称,例如examplebucket。
bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', 'examplebucket')

# 填写自定义域名。
test_domain = 'www.example.com'
# 删除CNAME记录。
bucket.delete_bucket_cname(test_domain)

相关文档

  • 关于创建域名所有权验证所需的CnameToken的API接口说明,请参见CreateCnameToken
  • 关于获取CnameToken的API接口说明,请参见GetCnameToken
  • 关于添加CNAME记录的API接口说明,请参见PutCname
  • 关于查看CNAME记录的API接口说明,请参见ListCname
  • 关于删除CNAME记录的API接口说明,请参见DeleteCname