PutCname は、カスタムドメイン名をバケットにマッピングします。標準バケットは完全一致 CNAME のみをサポートします。エージェントバケットは、そのバケットスペースへのアクセスに使用するワイルドカード CNAME もサポートします。
注意事項
エージェントバケットに完全一致 CNAME またはワイルドカード CNAME をマッピングする場合、リクエスト XML に
IsWildCard要素を明示的に含め、true または false に設定する必要があります。この値は空にできません。エージェントバケットでは、次の要素はサポートされていません:
AccessPointName、AccessPointNameForObjectProcess、PurgeConfiguration/IsPurgeCdnCache、およびClientCaConfiguration(casCertId、インライン証明書、削除操作を含む)。これらのいずれかを設定すると、OSS は 400 MalformedXML エラーを返します。標準バケットは、引き続きこれらの要素を完全にサポートします。バケットスペースを CNAME に直接マッピングすることはできません。バケットスペースへのパブリックネットワークアクセスは、その親のエージェントバケットにマッピングされたワイルドカード CNAME を経由します。
権限
デフォルトでは、Alibaba Cloud アカウントはすべての権限を持っています。Alibaba Cloud アカウント配下の RAM ユーザーおよび RAM ロールは、デフォルトでは権限がありません。Alibaba Cloud アカウントまたはアカウント管理者は、RAM ポリシーまたはバケットポリシーを使用して、必要な権限を付与する必要があります。
API | アクション | 説明 |
PutCname | oss:PutCname | カスタムドメイン名をバケットにマッピングします。 |
yundun-cert:DescribeSSLCertificatePrivateKey | カスタムドメイン名をバケットにマッピングする際に証明書をバインドする場合、これら 3 つの権限が必要です。 | |
yundun-cert:DescribeSSLCertificatePublicKeyDetail | ||
yundun-cert:CreateSSLCertificate |
リクエスト構文
POST /?cname&comp=add HTTP/1.1
Host: BucketName.oss-cn-hangzhou.aliyuncs.com
Content-Type: application/xml
Content-Length: 186
Date: GMT Date
Authorization: SignatureValue
<BucketCnameConfiguration>
<Cname>
<Domain>example.com</Domain>
</Cname>
</BucketCnameConfiguration>PutCname は、リクエスト XML の IsWildCard 要素を使用して、CNAME が完全一致かワイルドカードかを宣言します。エージェントバケットの場合、IsWildCard 要素は必須です。
リクエストヘッダー
この操作は、共通のリクエストヘッダーのみを使用します。詳細については、「共通 HTTP ヘッダー」をご参照ください。
リクエスト要素
要素 | タイプ | 必須 | 例 | 説明 |
BucketCnameConfiguration | コンテナー | はい | N/A | CNAME 設定を格納するコンテナーです。 親ノード:なし 子ノード:Cname |
Cname | コンテナー | はい | N/A | CNAME 情報を格納するコンテナーです。 親ノード:BucketCnameConfiguration 子ノード:Domain、IsWildCard、CertificateConfiguration |
Domain | String | はい | example.com | カスタムドメイン名です。完全一致 CNAME をマッピングするには、この要素を 親ノード:Cname 子ノード:なし |
IsWildCard | Boolean | 標準バケット:いいえ エージェントバケット:はい | true | ワイルドカード CNAME をマッピングするかどうかを指定します。有効な値:
エージェントバケットの場合、この要素は必須です。明示的に true または false に設定する必要があり、空にすることはできません。標準バケットの場合、この要素はオプションであり、デフォルトは false です。 親ノード:Cname 子ノード:なし |
CertificateConfiguration | コンテナー | いいえ | N/A | 証明書設定を格納するコンテナーです。ワイルドカード CNAME をマッピングする場合、証明書の CN または SAN は 親ノード:Cname 子ノード:CertId、Certificate、PrivateKey、PreviousCertId、Force、DeleteCertificate |
CertId | String | いいえ | 493****-cn-hangzhou | 証明書 ID です。 親ノード:CertificateConfiguration 子ノード:なし |
Certificate | String | いいえ | -----BEGIN CERTIFICATE----- MIIDhDCCAmwCCQCFs8ixARsyrDANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMC **** -----END CERTIFICATE----- | 証明書の公開鍵です。 親ノード:CertificateConfiguration 子ノード:なし |
PrivateKey | String | いいえ | -----BEGIN PRIVATE KEY----- MIIDhDCCAmwCCQCFs8ixARsyrDANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMC **** -----END PRIVATE KEY----- | 証明書の秘密鍵です。 親ノード:CertificateConfiguration 子ノード:なし |
PreviousCertId | String | いいえ | 493****-cn-hangzhou | 現在バインドされている証明書の ID です。 Force が true に設定されていない場合、OSS はこの値が実際にバインドされている証明書と一致するかどうかを確認し、一致しない場合はエラーを返します。 重要 証明書をバインドする際に PreviousCertId を指定しない場合は、Force を true に設定してください。 親ノード:CertificateConfiguration 子ノード:なし |
Force | String | いいえ | true | 証明書を上書きするかどうかを指定します。有効な値:
親ノード:CertificateConfiguration 子ノード:なし |
DeleteCertificate | String | いいえ | true | 証明書を削除するかどうかを指定します。有効な値:
親ノード:CertificateConfiguration 子ノード:なし |
レスポンスヘッダー
この操作は、共通のレスポンスヘッダーのみを返します。詳細については、「共通 HTTP ヘッダー」をご参照ください。
例
リクエスト例
標準バケットへのカスタムドメイン名のマッピング
POST /?cname&comp=add HTTP/1.1 Host: oss-example.oss-cn-hangzhou.aliyuncs.com Content-Type: application/xml Content-Length: 186 Date: Thu, 24 Sep 2015 15:39:12 GMT Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,AdditionalHeaders=host,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e <BucketCnameConfiguration> <Cname> <Domain>example.com</Domain> </Cname> </BucketCnameConfiguration>標準バケットのカスタムドメイン名への証明書のバインド
POST /?cname&comp=add HTTP/1.1 Host: oss-example.oss-cn-hangzhou.aliyuncs.com Content-Type: application/xml Content-Length: 186 Date: Thu, 24 Sep 2015 15:39:12 GMT Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,AdditionalHeaders=host,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e <BucketCnameConfiguration> <Cname> <Domain>example.com</Domain> <CertificateConfiguration> <CertId>493****-cn-hangzhou</CertId> <Certificate>-----BEGIN CERTIFICATE----- MIIDhDCCAmwCCQCFs8ixARsyrDANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMC **** -----END CERTIFICATE-----</Certificate> <PrivateKey>-----BEGIN PRIVATE KEY----- MIIDhDCCAmwCCQCFs8ixARsyrDANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMC **** -----END PRIVATE KEY-----</PrivateKey> <PreviousCertId>493****-cn-hangzhou</PreviousCertId> <Force>true</Force> </CertificateConfiguration> </Cname> </BucketCnameConfiguration>標準バケットのカスタムドメイン名からの証明書のバインド解除
ドメイン名でこの証明書を使用する必要がなくなった場合は、バインドを解除してください。
POST /?cname&comp=add HTTP/1.1 Host: oss-example.oss-cn-hangzhou.aliyuncs.com Content-Type: application/xml Content-Length: 186 Date: Thu, 24 Sep 2015 15:39:12 GMT Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,AdditionalHeaders=host,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e <BucketCnameConfiguration> <Cname> <Domain>example.com</Domain> <CertificateConfiguration> <DeleteCertificate>true</DeleteCertificate> </CertificateConfiguration> </Cname> </BucketCnameConfiguration>エージェントバケットへのワイルドカード CNAME のマッピング (ワイルドカード証明書を使用)
POST /?cname&comp=add HTTP/1.1 Host: myab-$uid-$region-ab-apsr.oss-cn-hangzhou.aliyuncs.com Content-Type: application/xml Content-Length: 186 Date: Thu, 17 Apr 2025 15:39:12 GMT Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,AdditionalHeaders=host,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e <BucketCnameConfiguration> <Cname> <Domain>example.com</Domain> <IsWildCard>true</IsWildCard> <CertificateConfiguration> <Certificate>-----BEGIN CERTIFICATE----- MIIDhDCCAmwCCQCFs8ixARsyrDANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMC **** -----END CERTIFICATE-----</Certificate> <PrivateKey>-----BEGIN PRIVATE KEY----- MIIDhDCCAmwCCQCFs8ixARsyrDANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMC **** -----END PRIVATE KEY-----</PrivateKey> </CertificateConfiguration> </Cname> </BucketCnameConfiguration>エージェントバケットへの完全一致 CNAME のマッピング
POST /?cname&comp=add HTTP/1.1 Host: myab-$uid-$region-ab-apsr.oss-cn-hangzhou.aliyuncs.com Content-Type: application/xml Content-Length: 186 Date: Thu, 17 Apr 2025 15:39:12 GMT Authorization: OSS4-HMAC-SHA256 Credential=LTAI********************/20250417/cn-hangzhou/oss/aliyun_v4_request,AdditionalHeaders=host,Signature=a7c3554c729d71929e0b84489addee6b2e8d5cb48595adfc51868c299c0c218e <BucketCnameConfiguration> <Cname> <Domain>console.example.com</Domain> <IsWildCard>false</IsWildCard> </Cname> </BucketCnameConfiguration>
レスポンス例
content-length: 0 x-oss-console-auth: success server: AliyunOSS x-oss-server-time: 980 connection: keep-alive x-oss-request-id: 5C1B138A109F4E405B2D date: Wed, 15 Sep 2021 03:33:37 GMT
OSS SDK
次の OSS SDK が PutCname API をサポートしています:
ossutil
PutCname API に対応する ossutil コマンドの詳細については、「put-cname」をご参照ください。
エラーコード
エラーコード | HTTP ステータスコード | 説明 |
InvalidArgument | 400 | エラーの原因として、以下が考えられます:
|
MalformedXML | 400 | リクエストにエージェントバケットがサポートしていない要素 (AccessPointName、AccessPointNameForObjectProcess、PurgeConfiguration/IsPurgeCdnCache、または ClientCaConfiguration) が含まれているか、リクエスト本文の形式が無効です。 |
CnameCertificateMismatch | 400 | 証明書が CNAME ドメイン名と一致しません。ワイルドカード CNAME をマッピングする場合は、CN または SAN が |
NeedVerifyDomainOwnership | 403 | ドメイン名の所有権が検証されていません。 ドメイン名の所有権を検証するには、次の手順を実行してください:
|
CnameDenied | 403 | ドメイン名は既に使用されています。 |
CnameIsForbidden | 403 | ドメイン名は OSS によって予約されているため、マッピングできません。 |
CnameIsRisk | 403 | ドメイン名はリスクが高いため、マッピングできません。 |
NoSuchCnameInRecord | 404 | ドメイン名に ICP 登録がありません。ICP 登録の申請方法の詳細については、「Alibaba Cloud Domain Names」をご参照ください。 |
ConflictCname | 409 | ワイルドカードのベースドメイン名は、同じ UID の別のエージェントバケットに既にマッピングされています。まず元のエージェントバケットからワイルドカード CNAME のマッピングを解除してから、再度マッピングしてください。 |
CnameAlreadyExists | 409 | エラーの原因として、以下が考えられます:
これらの問題を解決するには、ドメイン名のマッピングを解除してください。詳細については、「ドメイン名のマッピング解除」をご参照ください。 |
MethodNotAllowed | 405 | 対象のバケットタイプでは CNAME 機能が有効になっていません。 |