Updated on 2024-03-26 GMT+08:00

Creating a Bucket

Functions

This operation is used to create a bucket with a specified name.

  • By default, a user can have a maximum of 100 buckets.
  • The name of a deleted bucket can be reused for a bucket or a parallel file system at least 30 minutes after the deletion.
  • When creating a bucket in OBS, you can enable the multi-AZ mode for the bucket or disable it. With the multi-AZ mode disabled, data in a bucket is stored in a single AZ by default. With the multi-AZ mode enabled, data in a bucket is stored redundantly in multiple AZs, improving reliability. However, buckets created before are still in the single AZ mode.
  • You can enable WORM when you create a bucket, but you cannot enable WORM for an existing bucket. In a bucket with WORM enabled, you can further configure retention policies for objects you upload to this bucket. For more information, see Configuring a Default WORM Policy for a Bucket. Once enabled, WORM cannot be disabled for a bucket. When you create a bucket with WORM enabled, OBS automatically enables versioning for the bucket and the versioning cannot be suspended for that bucket. When you create a parallel file system, you cannot enable WORM for it.

A bucket name must be unique in OBS. If a user creates a bucket with the same name as that of an existing bucket under the same account and in the same region, a 200 code (indicating success) is returned. In scenarios other than the preceding one, the request for creating a bucket with the same name as that of an existing one will receive the 409 code (indicating that a namesake bucket already exists). To set an access control policy for the bucket to be created, you can add the x-obs-acl parameter to request headers.

Storage Class

You can create buckets with different storage classes. The x-obs-storage-class header in a bucket creation request specifies the bucket's storage class. If you do not specify a storage class when you upload an object to the bucket, the object inherits the storage class of the bucket. The storage class options are as follows: STANDARD (Standard), WARM (Infrequent Access), COLD (Archive), DEEP_ARCHIVE (Deep Archive). If the x-obs-storage-class header is not in the request, a Standard bucket will be created.

If the storage class of an object is not specified when it is uploaded to a bucket (see Uploading an Object - PUT), the object will be stored in the default storage class of the bucket.

  • OBS Standard features low access latency and high throughput. It is most suitable for storing frequently accessed (multiple times per month) hot files. Potential application scenarios include big data, mobile applications, trending videos, and social media images.
  • OBS Infrequent Access is most suitable for storing semi-frequently accessed (less than 12 times a year) data requiring quick response. Potential application scenarios include file synchronization or sharing and enterprise-level backup. It provides the same durability, access latency, and throughput as the Standard but at a lower price. The main drawback, however, is that it has lower availability than the Standard.
  • OBS Archive is most suitable for archiving rarely-accessed (averagely once a year) data. Potential application scenarios include data archiving and long-term data retention for backup. It provides secure, durable, and inexpensive storage, which can replace tape libraries. To keep cost low, it may take hours to restore data from the Archive storage class.
  • Deep Archive: The Deep Archive storage class (under limited beta testing) is suitable for storing data that is barely (once every few years) accessed. This storage class costs less than the Archive storage class, but takes longer time (usually several hours) to restore data.

Request Syntax

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
PUT / HTTP/1.1 
Host: bucketname.obs.region.myhuaweicloud.com
Content-Length: length
Date: date
Authorization: authorization
x-obs-az-redundancy: 3az
<CreateBucketConfiguration xmlns="http://obs.region.myhuaweicloud.com/doc/2015-06-30/"> 
 
    <Location>location</Location> 
</CreateBucketConfiguration>

Request Parameters

This request contains no parameters.

Request Headers

The operation message header is the same as that of a common request. For details, see Table 3. However, this request can contain additional headers. The following table describes the additional headers for this request.

Table 1 Additional request headers

Header

Description

Mandatory

x-obs-acl

When creating a bucket, you can add this header to set the permission control policy for the bucket. The predefined common policies are as follows: private, public-read, public-read-write, public-read-delivered, and public-read-write-delivered (for details about the policies, see the ACL configuration using header fields in ACLs).

Type: string

No

x-obs-storage-class

When creating a bucket, you can add this header to specify the default storage class for the bucket. The storage class options are as follows: STANDARD (Standard), WARM (Infrequent Access), COLD (Archive), DEEP_ARCHIVE (Deep Archive). If this header is not in the request, the storage class of the bucket created is Standard.

Type: string

No

x-obs-grant-read

This header grants the read permission to all users under an account. It allows you to list objects in a bucket, list multipart tasks in a bucket, list multi-version objects in a bucket, and obtain bucket metadata.

Type: string

Example: x-obs-grant-read:id=Tenant ID

No

x-obs-grant-write

This header grants the write permission to all users under an account. Therefore, the users can create, delete, and overwrite all objects in a bucket, and can initialize parts, upload parts, copy parts, merge parts, and cancel multipart upload tasks.

Type: string

Example: x-obs-grant-write:id=Tenant ID

No

x-obs-grant-read-acp

This header grants the ACL read permission to all users under an account. Therefore, the users can read the bucket ACL information.

Type: string

Example: x-obs-grant-read-acp:id=Account ID

No

x-obs-grant-write-acp

This header grants the ACL write permission to all users under an account. Therefore, the users can modify the ACL of the bucket.

Type: string

Example: x-obs-grant-write-acp:id=Account ID

No

x-obs-grant-full-control

This header grants the full control permission to all users under an account.

Type: string

Example: x-obs-grant-full-control:id=Account ID

No

x-obs-grant-read-delivered

This header grants the read permission to all users under an account. By default, the read permission is applied to all objects in the bucket.

Type: string

Example: x-obs-grant-read-delivered:id=Account ID

No

x-obs-grant-full-control-delivered

This header grants the full control permission to all users under an account. By default, the FULL_CONTROL permission is applied to all objects in the bucket.

Type: string

Example: x-obs-grant-full-control-delivered:id=Account ID

No

x-obs-az-redundancy

This header is carried in the request when creating a bucket to enable the multi-AZ mode for the bucket. If this header is not carried, the bucket is in the single AZ mode by default. This header is carried to specify that a newly created bucket uses multi-AZ storage. If the region where the bucket resides does not support multi-AZ storage, the bucket still uses the single-AZ storage.

Type: string

Example: x-obs-az-redundancy:3az

No

x-obs-fs-file-interface

This header can be carried when you create a bucket as a parallel file system.

Type: string

Example: x-obs-fs-file-interface:Enabled

No

x-obs-epid

Enterprise project ID, which can be obtained from the enterprise project service. The value is a universally unique identifier (UUID). The value of a default enterprise project is 0 or does not contain this header. Users who have not enabled the enterprise project service do not need to carry this header either.

Type: string

Example: x-obs-epid:9892d768-2d13-450f-aac7-ed0e44c2585f

No

x-obs-bucket-type

You can add this header to specify what type of bucket you will create. You can choose to create a bucket or a parallel file system.

Type: string

OBJECT: a bucket

POSIX: a parallel file system.

Example: x-obs-bucket-type:OBJECT

No

x-obs-bucket-object-lock-enabled

When creating a bucket, you can use this header to enable WORM for the bucket.

Type: string

Example: x-obs-bucket-object-lock-enabled:true

No

x-obs-server-side-encryption

When creating a bucket, you can use this header to specify an encryption method for the bucket.

Type: string

Value options: kms, obs

Example: x-obs-server-side-encryption: kms

No

x-obs-server-side-data-encryption

When creating a bucket, you can use this header to specify an encryption algorithm for server-side encryption.

Type: string

Value options: AES256

You can set this header to AES256 if x-obs-server-side-encryption:kms is used.

You can set this header to AES256 if x-obs-server-side-encryption:obs is used.

Example: x-obs-server-side-data-encryption: AES256

No

x-obs-server-side-encryption-kms-key-id

Customer master key (CMK) used in SSE-KMS encryption mode. If you do not specify this header, the default master key will be used.

Type: string

Valid value formats are as follows:

  1. regionID:domainID:key/key_id
  2. key_id

Where:

regionID indicates the ID of the region where the key belongs. You can obtain this ID from Regions and Endpoints.

  1. domainID indicates the ID of the account where the key belongs. To obtain the ID, see section "Obtaining the Account ID and User ID."
  2. key_id is the ID of a key created from DEW. You can obtain this ID by referring to Viewing a CMK.

Optional if x-obs-server-side-encryption: kms is included.

x-obs-sse-kms-key-project-id

ID of the project (not an enterprise project) where the KMS CMK belongs when SSE-KMS is used

Type: string

Value options: a project ID (not an enterprise project ID) that matches the KMSMasterKeyID specified by x-obs-server-side-encryption-kms-key-id

This field can be used only when x-obs-server-side-encryption-kms-key-id is included.

Request Elements

This request can use additional elements. For details about additional elements, see Table 2.

Table 2 Additional request elements

Element

Description

Mandatory

Location

Specifies the region where a bucket will be created.

  • When the endpoint of the CN North-Beijing1 region is used for bucket creation,
    • if location is not included, the bucket will be created in CN North-Beijing1 (cn-north-1) by default.
    • if another region, for example, CN-Hong Kong (ap-southeast-1), is specified for location, the bucket will be created in the CN-Hong Kong region.
  • When the endpoint of a region other than CN North-Beijing1 is used for bucket creation, location must be set to the region that the used endpoint corresponds to.

    For example, if obs.ap-southeast-1.myhuaweicloud.com is used, you must set location to ap-southeast-1.

For details about OBS regions and endpoints, see Regions and Endpoints.

Type: string

No

Response Syntax

1
2
3
4
HTTP/1.1 status_code
Location: location
Date: date
Content-Length: length

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: Creating a Bucket

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
PUT / HTTP/1.1
User-Agent: curl/7.29.0
Host: examplebucket.obs.region.myhuaweicloud.com
Accept: */*
Date: WED, 01 Jul 2015 02:25:05 GMT
Authorization: OBS H4IPJX0TQTHTHEBQQCEC:75/Y4Ng1izvzc1nTGxpMXTE6ynw=
Content-Length: 157

<CreateBucketConfiguration xmlns="http://obs.region.myhuaweicloud.com/doc/2015-06-30/"> 
    <Location>region</Location>
</CreateBucketConfiguration>

Sample Response: Creating a Bucket

1
2
3
4
5
6
7
HTTP/1.1 200 OK
Server: OBS
x-obs-request-id: BF260000016435CE298386946AE4C482
Location: /examplebucket
x-obs-id-2: 32AAAQAAEAABSAAgAAEAABAAAQAAEAABCT9W2tcvLmMJ+plfdopaD62S0npbaRUz
Date: WED, 01 Jul 2015 02:25:06 GMT
Content-Length: 0

Sample Request: Creating a Bucket (with the ACL and Storage Class Specified)

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
PUT / HTTP/1.1
User-Agent: curl/7.29.0
Host: examplebucket.obs.region.myhuaweicloud.com
Accept: */*
Date: WED, 01 Jul 2015 02:25:05 GMT
x-obs-acl:public-read
x-obs-storage-class:STANDARD
Authorization: OBS H4IPJX0TQTHTHEBQQCEC:75/Y4Ng1izvzc1nTGxpMXTE6ynw=
Content-Length: 157

<CreateBucketConfiguration xmlns="http://obs.region.myhuaweicloud.com/doc/2015-06-30/"> 
    <Location>region</Location> 
</CreateBucketConfiguration>

Sample Response: Creating a Bucket (with the ACL and Storage Class Specified)

1
2
3
4
5
6
7
HTTP/1.1 200 OK
Server: OBS
x-obs-request-id: BF260000016435CE298386946AE4C482
Location: /examplebucket
x-obs-id-2: 32AAAQAAEAABSAAgAAEAABAAAQAAEAABCT9W2tcvLmMJ+plfdopaD62S0npbaRUz
Date: WED, 01 Jul 2015 02:25:06 GMT
Content-Length: 0

Sample Request: Creating a Bucket with Multi-AZ Storage

1
2
3
4
5
6
7
8
9
PUT / HTTP/1.1 
Host: examplebucket.obs.region.myhuaweicloud.com
Content-Length: length 
Date: date 
Authorization: authorization 
x-obs-az-redundancy:3az 
<CreateBucketConfiguration xmlns="http://obs.region.myhuaweicloud.com/doc/2015-06-30/"> 
 <Location>region</Location> 
</CreateBucketConfiguration>

Sample Response: Creating a Bucket with Multi-AZ Storage

1
2
3
4
5
6
7
8
HTTP/1.1 200 OK 
Server: OBS 
x-obs-request-id: BF260000016435CE298386946AE4C482 
Location: /examplebucket 
x-obs-id-2: 32AAAQAAEAABSAAgAAEAABAAAQAAEAABCT9W2tcvLmMJ+plfdopaD62S0npbaRUz 
Date: WED, 01 Jul 2015 02:25:06 GMT 
x-obs-az-redundancy:3az
Content-Length: 0

Sample Request: Creating a Parallel File System

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
PUT / HTTP/1.1
User-Agent: curl/7.29.0
Host: examplebucket.obs.region.myhuaweicloud.com
Accept: */*
Date: WED, 01 Jul 2015 02:25:05 GMT
Authorization: OBS H4IPJX0TQTHTHEBQQCEC:75/Y4Ng1izvzc1nTGxpMXTE6ynw=
Content-Length: 157
x-obs-fs-file-interface: Enabled

<CreateBucketConfiguration xmlns="http://obs.region.myhuaweicloud.com/doc/2015-06-30/"> 
<Location>region</Location> 
</CreateBucketConfiguration>

Sample Response: Creating a Parallel File System

1
2
3
4
5
6
7
HTTP/1.1 200 OK
Server: OBS
x-obs-request-id: BF260000016435CE298386946AE4C482
Location: /examplebucket
x-obs-id-2: 32AAAQAAEAABSAAgAAEAABAAAQAAEAABCT9W2tcvLmMJ+plfdopaD62S0npbaRUz
Date: WED, 01 Jul 2015 02:25:06 GMT
Content-Length: 0

Sample Request: Creating a Bucket with WORM Enabled

PUT / HTTP/1.1
User-Agent: curl/7.29.0
Host: examplebucket.obs.region.myhuaweicloud.com
Accept: */*
Date: WED, 01 Jul 2015 02:25:05 GMT
Authorization: OBS H4IPJX0TQTHTHEBQQCEC:75/Y4Ng1izvzc1nTGxpMXTE6ynw=
x-obs-bucket-object-lock-enabled:true
Content-Length: 0

Sample Response: Creating a Bucket with WORM Enabled

HTTP/1.1 200 OK
Server: OBS
x-obs-request-id: 00000184C11AC7A6809F881341842C02
x-reserved-indicator: Unauthorized
Location: /examplebucket
x-obs-id-2: 32AAAQAAEAABSAAgAAEAABAAAQAAEAABCT9W2tcvLmMJ+plfdopaD62S0npbaRUz
Date: WED, 01 Jul 2015 02:25:06 GMT
Content-Length: 0

Sample Request: Creating a Bucket with Explicitly Configured Access Permissions

PUT / HTTP/1.1
Authorization: OBS H4IPJX0TQTHTHEBQQCEC:iqSPeUBl66PwXDApxjRKk6hlcN4=
x-obs-grant-read: id=783fc6vz2cf2442c096evxxxxxxxxxxxx
x-obs-grant-write: id=3u3fc6vz2cf24mc830fhsxxxxxxxxxxxx
x-obs-grant-read-acp: id=902su2vz2cf2vire.239caxxxxxxxxxxxx
User-Agent: curl/7.29.0
Host: examplebucket.obs.region.myhuaweicloud.com
Date: WED, 01 Jul 2015 02:37:22 GMT
Content-Type: application/xml
 
<CreateBucketConfiguration  xmlns="http://obs.region.myhuaweicloud.com/doc/2015-06-30/">
    <Location>region</Location>
</CreateBucketConfiguration>

Sample Response: Creating a Bucket with Explicitly Configured Access Permissions

x-obs-id-2: 32AAAQAAEAABAAAQAAEAABAAAQAAEAABCTeau73DlKTh4wPYzoZf5w3KacolerP4
x-obs-request-id: 0000018A2A22B72447CF01A99F32E2B0
Server: OBS
Content-Length: 0
Date: WED, 01 Jul 2015 02:37:22 GMT
Location: /examplebucket