Help Center/ Object Storage Service/ API Reference/ APIs/ Advanced Bucket Settings/ Configuring a Custom Domain Name for a Bucket
Updated on 2026-03-06 GMT+08:00

Configuring a Custom Domain Name for a Bucket

Functions

OBS uses the PUT method to configure a custom domain name for a bucket. After the configuration is successful, you can access the bucket through the domain name.

To perform this operation, the user must be the bucket owner or the bucket owner's IAM user that has permissions required for configuring custom domain names.

Ensure that the custom domain name can correctly resolve to the OBS service through DNS.

Authorization Information

To call this API, you must be the bucket owner or have the permission to configure a custom domain name for a bucket. You are advised to use IAM or bucket policies for authorization. For details about OBS authorization methods, see Differences Between OBS Permissions Control Methods.

  • If you use IAM for authorization, you need to use either role/policy-based authorization or identity policy-based authorization and configure the required permissions:
    • If you use role/policy-based authorization (IAM v3 APIs in the old IAM version), you need to grant the obs:bucket:PutBucketCustomDomainConfiguration permission. For details, see Creating a Custom IAM Policy.
    • If you use identity policy-based authorization (IAM v5 APIs in the new IAM version), you need to grant the obs:bucket:putBucketCustomDomainConfiguration permission, as shown in the following table. For details, see Creating a Custom IAM Identity Policy.

      Action

      Access Level

      Resource Type (*: Required)

      Condition Key

      Alias

      Dependencies

      obs:bucket:putBucketCustomDomainConfiguration

      Write

      bucket *

      -

      -

      -

      • obs:EpochTime
      • obs:SourceIp
      • obs:TlsVersion
      • obs:CustomDomain
  • If you use bucket policies for authorization, you need to grant the obs:bucket:PutBucketCustomDomainConfiguration permission. For details, see Creating a Custom Bucket Policy.

Request Syntax

Binding a custom domain name and server certificate
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
PUT /?customdomain=domainname HTTP/1.1
User-Agent: curl/7.29.0
Host: bucketname.obs.region.myhuaweicloud.com 
Accept: */*
Date: date
Authorization: authorization string
Content-Length: length
Content-MD5: n58IG6hfM7vqI4K0vnWpog==

<CustomDomainConfiguration> 
    <Name>name</Name> 
    <CertificateId>certificateId</CertificateId> 
    <Certificate>certificate</Certificate> 
    <CertificateChain>certificateChain</CertificateChain> 
    <PrivateKey>privateKey</PrivateKey> 
</CustomDomainConfiguration>

Request Parameters

Table 1 Request parameters

Parameter

Mandatory (Yes/No)

Type

Description

customdomain

Yes

String

Definition:

Custom domain name of a bucket.

Constraints:

A bucket can have a maximum of 30 domain names. One custom domain name can be used for only one bucket.

Range:

The value is a string of 0 to 256 characters.

Default value:

None

Request Header

Table 2 Request headers

Header

Type

Mandatory (Yes/No)

Description

Content-MD5

String

No

Definition:

This header is mandatory when you configure a custom domain name certificate to verify that the content of the request body is consistent with what was sent.

Base64-encoded 128-bit MD5 value of the request body calculated according to RFC 1864.

Example: n58IG6hfM7vqI4K0vnWpog==

Constraints:

None

Range:

None

Default value:

None

For details about other common headers, see Table 3.

Request Elements

The request elements are optional. If the request elements are empty, the certificates bound to the same custom domain name will be overwritten.

Table 3 Request elements

Parameter

Mandatory (Yes/No)

Type

Description

Name

No

String

Definition:

Certificate name

Constraints:

Only uppercase letters, lowercase letters, digits, underscores (_), hyphens (-), and periods (.) are allowed.

Range:

The value can contain 3 to 63 characters.

Default value:

None

CertificateId

No

String

Definition:

Certificate ID. If no certificate ID is specified, the system automatically generates a certificate ID.

Constraints:

If you use the CCM service to host a certificate, the specified certificate ID must be the same as that on CCM. If you need to manage the certificates by yourself, do not set the certificate ID in the request.

Range:

The value is a string of 16 characters consisting of letters and digits.

Default value:

An automatically generated random certificate ID that consists of 16 characters

Certificate

No

String

Definition:

Certificate content, which can contain intermediate and root certificates.

Constraints:

  • If CertificateChain contains a certificate chain, only the certificate itself will be extracted from Certificate.
  • Use escape characters \n or \r\n to replace line breaks.

Range:

The value is a string of 0 to 65536 characters.

Default value:

None

CertificateChain

No

String

Definition:

Certificate chain. The value can be passed through the Certificate field.

Constraints:

Use escape characters \n or \r\n to replace line breaks.

Range:

The value is a string of 0 to 8192 characters.

Default value:

None

PrivateKey

No

String

Definition:

Private key of a certificate.

Constraints:

  • An encrypted private key cannot be uploaded.
  • Use escape characters \n or \r\n to replace line breaks.

Range:

The value is a string of 0 to 4096 characters.

Default value:

None

Response Syntax

1
2
3
4
5
6
HTTP/1.1 200 OK
Server: OBS
x-obs-request-id: request id
x-obs-id-2:  id
Date: date
Content-Length: 0

Response Headers

The response to the request uses common headers. For details, see Table 1.

Response Elements

This response contains no elements.

Error Responses

No special error responses are returned. For details about error responses, see Table 2.

Sample Request 1: Binding a Custom Domain Name

Binding a custom domain name

1
2
3
4
5
6
7
PUT /?customdomain=obs.ccc.com HTTP/1.1
User-Agent: curl/7.29.0
Host: examplebucket.obs.region.myhuaweicloud.com 
Accept: */*
Date: Mon, 14 Jan 2019 08:31:36 +0000
Authorization: OBS UDSIAMSTUBTEST000094:u2kJF4kENs6KlIDcAZpAKSKPtnc=
Content-Length: 0

Sample Response 1

1
2
3
4
5
6
HTTP/1.1 200 OK
Server: OBS
x-obs-request-id: 000001697692CC5380E9D272E6D8F830
x-obs-id-2: 32AAAQAAEAABSAAgAAEAABAAAQAAEAABCSsfu2GXj9gScHhFnrrTPY2cFOEZuvta
Date: Wed, 13 Mar 2019 10:22:05 GMT
Content-Length: 0

Sample Request 2: Binding a Custom Domain Name

Binding a custom domain name and server certificate

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
PUT /?customdomain=obs.ccc.com HTTP/1.1
User-Agent: curl/7.29.0
Host: examplebucket.obs.region.myhuaweicloud.com 
Accept: */*
Date: Mon, 14 Jan 2019 08:31:36 +0000
Authorization: OBS UDSIAMSTUBTEST000094:u2kJF4kENs6KlIDcAZpAKSKPtnc=
Content-Length: 314
Content-MD5: n58IG6hfM7vqI4K0vnWpog==

<CustomDomainConfiguration> 
    <Name>exampleCertName</Name> 
    <CertificateId>exampleCertificateId</CertificateId> 
    <Certificate>exampleCertificate</Certificate> 
    <CertificateChain>exampleCertificateChain</CertificateChain> 
    <PrivateKey>examplePrivateKey</PrivateKey> 
</CustomDomainConfiguration>

Sample Response 2

1
2
3
4
5
6
HTTP/1.1 200 OK
Server: OBS
x-obs-request-id: 000001697692CC5380E9D272E6D8F830
x-obs-id-2: 32AAAQAAEAABSAAgAAEAABAAAQAAEAABCSsfu2GXj9gScHhFnrrTPY2cFOEZuvta
Date: Wed, 13 Mar 2019 10:22:05 GMT
Content-Length: 0