PUT Bucket operation creates a new bucket. The user who sends the request to create the bucket becomes the bucket owner. Anonymous requests can’t create buckets.
Note: To create a bucket, you must have a valid Key ID, which is used to authenticate requests.
A best practice is to use DNS-compliant bucket names. DNS-compliant bucket names ensure that virtual hosted-style requests can locate buckets.
A bucket name must obey the following rules, which produces a DNS-compliant bucket name:
- Must be from 3 to 63 characters.
- Must be one or more labels, each separated by a period (.). Each label:
- Must start with a lowercase letter or a number. Must end with a lowercase letter or a number. Can contain lowercase letters, numbers and dashes.
- Must not be formatted as an IP address (e.g., 192.168.9.2).
PUT Bucket offers the option to specify the permissions you want to grant to specific accounts or groups for the bucket. You can grant permissions to accounts or groups with request headers, using one of the following two methods:
- Specify a predefined ACL using the x-amz-acl request header. More information about predefined ACLs is available here.
- Specify access permissions explicitly using the x-amz-grant-read, x-amz-grant-write, x-amz-grant-read-acp, x-amz-grant-write-acp, x-amz-grant-full-control headers, which map to the set of ACL permissions supported by Amazon S3.
Note: You can use either a predefined ACL or specify access permissions explicitly, not both.
PUT / HTTP/1.1 Host: bucketname.data.riak.com Content-Length: length Date: date Authorization: signature_value <CreateBucketConfiguration xmlns="http://data.riak.com/doc/2012-06-01/"> <LocationConstraint>BucketRegion</LocationConstraint> </CreateBucketConfiguration>
This example includes some request headers. The Request Headers section contains the complete list of headers.
This operation does not use request parameters.
PUT Bucket offers the following request headers in addition to the request headers common to all operations.
x-amz-acl - This request header specifies a predefined ACL to apply to the bucket being created. A predefined ACL grants specific permissions to individual accounts or predefined groups.
- Type: String
- Valid Values: private | public-read | public-read-write | authenticated-read | bucket-owner-read | bucket-owner-full-control
PUT Bucket does not return response elements.
A request that creates a bucket named
PUT / HTTP/1.1 Host: basho_docs.data.riak.com Content-Length: 0 Date: Fri, 01 Jun 2012 12:00:00 GMT Authorization: AWS AKIAIOSFODNN7EXAMPLE:xQE0diMbLRepdf3YB+FIEXAMPLE=
HTTP/1.1 200 OK Date: Fri, 01 Jun 2012 12:00:00 GMT Content-Length: 0 Connection: close Server: MochiWeb/1.1 WebMachine/1.9.0 (someone had painted it blue)
Sample Request to Configure Access Permission Using Predefined ACL
This request creates a bucket named
basho_docs and sets the ACL to private.
PUT / HTTP/1.1 Host: basho_docs.data.riak.com Content-Length: 0 x-amz-acl: private Date: Fri, 01 Jun 2012 12:00:00 GMT Authorization: AWS AKIAIOSFODNN7EXAMPLE:xQE0diMbLRepdf3YB+FIEXAMPLE=
Sample Response For Bucket with Predefined ACL
HTTP/1.1 200 OK Date: Fri, 01 Jun 2012 12:00:00 GMT Location: /basho_docs Content-Length: 0 Connection: close Server: MochiWeb/1.1 WebMachine/1.9.0 (someone had painted it blue)