オブジェクトをバケットにアップロードすると、Object Storage Service (OSS) はオブジェクトへのアクセスに使用できる URL を自動的に生成します。この URL には、バケットのパブリックエンドポイントが含まれています。カスタムドメイン名を使用してオブジェクトにアクセスするには、CNAME レコードを追加して、オブジェクトが保存されているバケットにカスタムドメイン名をバインドする必要があります。
注意事項
このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。OSS と同じリージョンにある他の Alibaba Cloud サービスから OSS にアクセスする場合は、内部エンドポイントを使用します。OSS のリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。
このトピックでは、アクセス認証情報は環境変数から取得されます。アクセス認証情報の設定方法の詳細については、「Python 1.0 用 OSS SDK を使用したアクセス認証情報の設定」をご参照ください。
このトピックでは、OSS エンドポイントを使用して OSSClient インスタンスが作成されます。カスタムドメイン名または Security Token Service (STS) を使用して OSSClient インスタンスを作成する場合は、「初期化」をご参照ください。
CnameToken の作成
次のコードは、CnameToken を作成する方法を示しています。
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# バケットが配置されているリージョン (cn-hangzhou など) を指定します。このパラメーターは V4 署名に必要です。
region = "cn-hangzhou"
# バケット名を examplebucket に設定します。
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)
# カスタムドメイン名を指定します。
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
from oss2.credentials import EnvironmentVariableCredentialsProvider
# 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# バケットが配置されているリージョン (cn-hangzhou など) を指定します。このパラメーターは V4 署名に必要です。
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 の有効期限を出力します。
print(result.expire_time)CNAME レコードの追加
次のコードは、CNAME レコードを追加する方法を示しています。
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# バケットが配置されているリージョン (cn-hangzhou など) を指定します。このパラメーターは V4 署名に必要です。
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-----'''
# 証明書の秘密鍵を設定します。
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
from oss2.credentials import EnvironmentVariableCredentialsProvider
# 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# バケットが配置されているリージョン (cn-hangzhou など) を指定します。このパラメーターは V4 署名に必要です。
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)
# 証明書のステータスを出力します。
print(c.certificate.status)
# カスタムドメイン名を出力します。
print(c.domain)
# カスタムドメイン名がバインドされた時間を出力します。
print(c.last_modified)
# ドメイン名のステータスを出力します。
print(c.status)CNAME レコードの削除
次のコードは、CNAME レコードを削除する方法を示しています。
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# 環境変数からアクセス認証情報を取得します。サンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# バケットが配置されているリージョン (cn-hangzhou など) を指定します。このパラメーターは V4 署名に必要です。
region = "cn-hangzhou"
# バケット名を examplebucket に設定します。
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)
# カスタムドメイン名を指定します。
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」をご参照ください。