Updated on 2026-01-16 GMT+08:00

Creating a Bucket

A bucket is a global namespace of OBS and is a data container. It functions as a root directory of a file system and can store objects. The following code shows how to create a bucket:

// Import the dependency library.
require 'vendor/autoload.php';
// Import the SDK code library during the installation with source code.
// require 'obs-autoloader.php';
// Declare the namespace.
use Obs\ObsClient;

// Create an ObsClient instance.
$obsClient = new ObsClient([
      //Obtain an AK/SK pair using environment variables or import the AK/SK pair in other ways. Using hard coding may result in leakage.
      //Obtain an AK/SK pair on the management console.
      'key' => getenv('ACCESS_KEY_ID'),
      'secret' => getenv('SECRET_ACCESS_KEY'),
      'endpoint' => 'https://your-endpoint',
]);

$resp = $obsClient -> createBucket([
       'Bucket' => 'bucketname',
       // Set the ACL for the bucket to public read (the default state is private read and write).
       'ACL' => ObsClient::AclPublicRead,
       // Set the bucket storage class to Standard.
       'StorageClass' => ObsClient::StorageClassStandard,
       // Set the bucket location.
       'LocationConstraint' => 'bucketlocation'
]);

printf ("RequestId:%s\n", $resp ['RequestId']);
  • Bucket names are globally unique. Ensure that the bucket you create is named differently from any other bucket.
  • A bucket name must comply with the following rules:
    • Contains 3 to 63 characters chosen from lowercase letters, digits, hyphens (-), and periods (.), and starts with a digit or letter.
    • Cannot be an IP-like address.
    • Cannot start or end with a hyphen (-) or period (.)
    • Cannot contain two consecutive periods (.), for example, my..bucket.
    • Cannot contain periods (.) and hyphens (-) adjacent to each other, for example, my-.bucket or my.-bucket.