Create a bucket

This page shows you how to create a Cloud Storagebucket. If nototherwise specified in your request, buckets are created in theUS multi-region with a default storage class ofStandard storageand have a seven-daysoft delete retention duration.

Note: A bucket's name isnon-editable metadata.If you need to designate a specific name, it must bespecified at bucket creation.

Required roles

Note: The following content describes the required IAM roles andpermissions for creating a bucket with basic settings. If you want to set upcross-bucket replication as part of creating your bucket, you needadditional roles and permissions. Refer toBefore you begin in thecross-bucket replication user guide for information on the roles and permissionsrequired.

In order to get the required permissions for creating a Cloud Storagebucket, ask your administrator to grant you the Storage Admin(roles/storage.admin) IAM role for the project.

Thispredefined role contains the permission required to create a bucket.To see the exact permissions that are required, expand theRequired permissions section:

Required permissions

  • storage.buckets.create
  • storage.buckets.enableObjectRetention (only required ifenablingobject retention configurationsfor the bucket)
  • storage.buckets.list (only required if creating abucket using the Google Cloud console.)
  • resourcemanager.projects.get (only required if creating abucket using the Google Cloud console)

You might also be able to get these permissions withcustom roles or otherpredefined roles. To see which roles are associated with which permissions,refer toIAM roles for Cloud Storage.

For instructions on granting roles for projects, seeManage access to projects.

Create a new bucket

If you are creating a bucket for the first time, seeDiscover object storagewith the Google Cloud console orDiscover object storage with theGoogle Cloud CLI tool.

To create a bucket with specific settings or advanced configurations, completethe following steps:

Console

When creating a bucket using the Google Cloud console, you are onlyrequired to set a globally unique name for your bucket; all other steps areeither optional or have default settings.

  1. In the Google Cloud console, go to the Cloud StorageBuckets page.

    Go to Buckets

  2. ClickCreate.
  3. On theCreate a bucket page, enter your bucket information. After each of the following steps, clickContinue to proceed to the next step:
    1. In theGet started section, do the following:

      • Enter a globally unique name that meets thebucket name requirements.

      • To add abucket label, click the expander arrow to expand theLabels section, clickAdd label, and specify akey and avalue for your label.

    2. In theChoose where to store your data section, do the following:

      1. Select aLocation type.

      2. Use the location type's drop-down menu to select aLocation where object data within your bucket will be permanently stored.

      3. To set upcross-bucket replication, selectAdd cross-bucket replication via Storage Transfer Service and follow the steps:

        Set up cross-bucket replication

        1. In theBucket menu, select a bucket.
        2. In theReplication settings section, clickConfigure to configure settings for the replication job.

          TheConfigure cross-bucket replication pane appears.

          • To filter objects to replicate by object name prefix, enter a prefix with which you want to include or exclude objects, then clickAdd a prefix.
          • To set a storage class for the replicated objects, select a storage class from theStorage class menu. If you skip this step, the replicated objects will use the destination bucket's storage class by default.
          • ClickDone.
    3. In theChoose how to store your data section, do the following:

      1. Select adefault storage class for the bucket orAutoclass for automatic storage class management of your bucket's data.

      2. In theOptimize storage for data-intensive workloads section, do the following:

        1. To enablehierarchical namespace, selectEnable Hierarchical namespace on this bucket.

          Note: You cannot enable hierarchical namespace in an existing bucket.

        2. To enableAnywhere Cache, selectEnable Anywhere Cache and follow the steps:
          1. To create caches, clickConfigure.

          2. In theConfigure cache settings dialog that appears, click the drop-down arrow next to the listed regions and select the zones where you want to create caches.

          3. ClickDone.

          4. Note:Additional permissions are required to enable Anywhere Cache.

    4. In theChoose how to control access to objects section, select whether or not your bucket enforcespublic access prevention, and select anaccess control model for your bucket's objects.

      Note: If public access prevention is already enforced by your project'sorganization policy, thePrevent public access checkbox is locked.

    5. In theChoose how to protect object data section, do the following:

      • Select any of the options underData protection that you want to set for your bucket.

      • To enablesoft delete, click expander arrow labeledsoft delete policy, and specify the number of days you want to retain objects after deletion.

      • To choose how your object data will be encrypted, click the expander arrow labeledData encryption, and select aData encryption method.

  4. ClickCreate.

To learn how to get detailed error information about failed Cloud Storage operations in the Google Cloud console, seeTroubleshooting.

Command line

Note: Cloud Shell provisions a temporary virtual machine. If youwant to upload objects to Cloud Storage or download objects fromCloud Storage, use a local development environment.

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, aCloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. In your development environment, run thegcloud storage buckets create command:

    gcloud storage buckets create gs://BUCKET_NAME --location=BUCKET_LOCATION

    Where:

    • BUCKET_NAME is the name you want to give yourbucket, subject tonaming requirements. For example,my-bucket.
    • BUCKET_LOCATION is thelocation of yourbucket. For example,US.

      Note: When creating aconfigurable dual-region, you mustset the--location flag to be thelocation code associated withthe underlying regions, and you must use the--placement flag with a valid pair of regions. For example,--location=ASIA --placement=ASIA-EAST1,ASIA-SOUTHEAST1.

    If the request is successful, the command returns the following message:

    Creating gs://BUCKET_NAME/...

    Set the following flags to have greater control over the creation ofyour bucket:

    • --project: Specify the project ID or project number with which yourbucket will be associated. For example,my-project.
    • --default-storage-class: Specify the defaultstorage classof your bucket. For example,STANDARD.
    • --uniform-bucket-level-access: Enableuniform bucket-level accessfor your bucket.
    • --soft-delete-duration: Specify asoft delete retentionduration, which is the number of days you want to retain objects afterthey get deleted. For example,10d.

    For example:

    gcloud storage buckets create gs://BUCKET_NAME --project=PROJECT_ID --default-storage-class=STORAGE_CLASS --location=BUCKET_LOCATION --uniform-bucket-level-access--soft-delete-duration=RETENTION_DURATION

    For a complete list of options for bucket creation using thegcloud CLI, seebuckets create options.

Client libraries

Note: Other options for creating a new bucket canbe found in the JSON API reference forbucket.insert

C++

For more information, see theCloud StorageC++ API reference documentation.

To authenticate to Cloud Storage, set up Application Default Credentials. For more information, seeSet up authentication for client libraries.

namespacegcs=::google::cloud::storage;using::google::cloud::StatusOr;[](gcs::Clientclient,std::stringconst&bucket_name,std::stringconst&storage_class,std::stringconst&location){StatusOr<gcs::BucketMetadata>bucket_metadata=client.CreateBucket(bucket_name,gcs::BucketMetadata().set_storage_class(storage_class).set_location(location));if(!bucket_metadata)throwstd::move(bucket_metadata).status();std::cout <<"Bucket " <<bucket_metadata->name() <<" created."            <<"\nFull Metadata: " <<*bucket_metadata <<"\n";}

C#

For more information, see theCloud StorageC# API reference documentation.

To authenticate to Cloud Storage, set up Application Default Credentials. For more information, seeSet up authentication for client libraries.

usingGoogle.Apis.Storage.v1.Data;usingGoogle.Cloud.Storage.V1;usingSystem;publicclassCreateRegionalBucketSample{/// <summary>/// Creates a storage bucket with region./// </summary>/// <param name="projectId">The ID of the project to create the buckets in.</param>/// <param name="location">The location of the bucket. Object data for objects in the bucket resides in/// physical storage within this region. Defaults to US.</param>/// <param name="bucketName">The name of the bucket to create.</param>/// <param name="storageClass">The bucket's default storage class, used whenever no storageClass is specified/// for a newly-created object. This defines how objects in the bucket are stored/// and determines the SLA and the cost of storage. Values include MULTI_REGIONAL,/// REGIONAL, STANDARD, NEARLINE, COLDLINE, ARCHIVE, and DURABLE_REDUCED_AVAILABILITY./// If this value is not specified when the bucket is created, it will default to/// STANDARD.</param>publicBucketCreateRegionalBucket(stringprojectId="your-project-id",stringbucketName="your-unique-bucket-name",stringlocation="us-west1",stringstorageClass="REGIONAL"){varstorage=StorageClient.Create();Bucketbucket=newBucket{Location=location,Name=bucketName,StorageClass=storageClass};varnewlyCreatedBucket=storage.CreateBucket(projectId,bucket);Console.WriteLine($"Created {bucketName}.");returnnewlyCreatedBucket;}}

Go

For more information, see theCloud StorageGo API reference documentation.

To authenticate to Cloud Storage, set up Application Default Credentials. For more information, seeSet up authentication for client libraries.

import("context""fmt""io""time""cloud.google.com/go/storage")// createBucketClassLocation creates a new bucket in the project with Storage class and// location.funccreateBucketClassLocation(wio.Writer,projectID,bucketNamestring)error{// projectID := "my-project-id"// bucketName := "bucket-name"ctx:=context.Background()client,err:=storage.NewClient(ctx)iferr!=nil{returnfmt.Errorf("storage.NewClient: %w",err)}deferclient.Close()ctx,cancel:=context.WithTimeout(ctx,time.Second*30)defercancel()storageClassAndLocation:=&storage.BucketAttrs{StorageClass:"COLDLINE",Location:"asia",}bucket:=client.Bucket(bucketName)iferr:=bucket.Create(ctx,projectID,storageClassAndLocation);err!=nil{returnfmt.Errorf("Bucket(%q).Create: %w",bucketName,err)}fmt.Fprintf(w,"Created bucket %v in %v with storage class %v\n",bucketName,storageClassAndLocation.Location,storageClassAndLocation.StorageClass)returnnil}

Java

For more information, see theCloud StorageJava API reference documentation.

To authenticate to Cloud Storage, set up Application Default Credentials. For more information, seeSet up authentication for client libraries.

importcom.google.cloud.storage.Bucket;importcom.google.cloud.storage.BucketInfo;importcom.google.cloud.storage.Storage;importcom.google.cloud.storage.StorageClass;importcom.google.cloud.storage.StorageOptions;publicclassCreateBucketWithStorageClassAndLocation{publicstaticvoidcreateBucketWithStorageClassAndLocation(StringprojectId,StringbucketName){// The ID of your GCP project// String projectId = "your-project-id";// The ID to give your GCS bucket// String bucketName = "your-unique-bucket-name";Storagestorage=StorageOptions.newBuilder().setProjectId(projectId).build().getService();// See the StorageClass documentation for other valid storage classes:// https://googleapis.dev/java/google-cloud-clients/latest/com/google/cloud/storage/StorageClass.htmlStorageClassstorageClass=StorageClass.COLDLINE;// See this documentation for other valid locations:// http://g.co/cloud/storage/docs/bucket-locations#location-mrStringlocation="ASIA";Bucketbucket=storage.create(BucketInfo.newBuilder(bucketName).setStorageClass(storageClass).setLocation(location).build());System.out.println("Created bucket "+bucket.getName()+" in "+bucket.getLocation()+" with storage class "+bucket.getStorageClass());}}

Node.js

For more information, see theCloud StorageNode.js API reference documentation.

To authenticate to Cloud Storage, set up Application Default Credentials. For more information, seeSet up authentication for client libraries.

/** * TODO(developer): Uncomment the following lines before running the sample. */// The ID of your GCS bucket// const bucketName = 'your-unique-bucket-name';// The name of a storage class// See the StorageClass documentation for other valid storage classes:// https://googleapis.dev/java/google-cloud-clients/latest/com/google/cloud/storage/StorageClass.html// const storageClass = 'coldline';// The name of a location// See this documentation for other valid locations:// http://g.co/cloud/storage/docs/locations#location-mr// const location = 'ASIA';// Imports the Google Cloud client libraryconst{Storage}=require('@google-cloud/storage');// Creates a client// The bucket in the sample below will be created in the project associated with this client.// For more information, please see https://cloud.google.com/docs/authentication/production or https://googleapis.dev/nodejs/storage/latest/Storage.htmlconststorage=newStorage();asyncfunctioncreateBucketWithStorageClassAndLocation(){// For default values see: https://cloud.google.com/storage/docs/locations and// https://cloud.google.com/storage/docs/storage-classesconst[bucket]=awaitstorage.createBucket(bucketName,{location,[storageClass]:true,});console.log(`${bucket.name} created with${storageClass} class in${location}`);}createBucketWithStorageClassAndLocation().catch(console.error);

PHP

For more information, see theCloud StoragePHP API reference documentation.

To authenticate to Cloud Storage, set up Application Default Credentials. For more information, seeSet up authentication for client libraries.

use Google\Cloud\Storage\StorageClient;/** * Create a new bucket with a custom default storage class and location. * * @param string $bucketName The name of your Cloud Storage bucket. *        (e.g. 'my-bucket') */function create_bucket_class_location(string $bucketName): void{    $storage = new StorageClient();    $storageClass = 'COLDLINE';    $location = 'ASIA';    $bucket = $storage->createBucket($bucketName, [        'storageClass' => $storageClass,        'location' => $location,    ]);    $objects = $bucket->objects([        'encryption' => [            'defaultKmsKeyName' => null,        ]    ]);    printf('Created bucket %s in %s with storage class %s', $bucketName, $storageClass, $location);}

Python

For more information, see theCloud StoragePython API reference documentation.

To authenticate to Cloud Storage, set up Application Default Credentials. For more information, seeSet up authentication for client libraries.

fromgoogle.cloudimportstoragedefcreate_bucket_class_location(bucket_name):"""    Create a new bucket in the US region with the coldline storage    class    """# bucket_name = "your-new-bucket-name"storage_client=storage.Client()bucket=storage_client.bucket(bucket_name)bucket.storage_class="COLDLINE"new_bucket=storage_client.create_bucket(bucket,location="us")print("Created bucket{} in{} with storage class{}".format(new_bucket.name,new_bucket.location,new_bucket.storage_class))returnnew_bucket

Ruby

For more information, see theCloud StorageRuby API reference documentation.

To authenticate to Cloud Storage, set up Application Default Credentials. For more information, seeSet up authentication for client libraries.

defcreate_bucket_class_locationbucket_name:# The ID to give your GCS bucket# bucket_name = "your-unique-bucket-name"require"google/cloud/storage"storage=Google::Cloud::Storage.newbucket=storage.create_bucketbucket_name,location:"ASIA",storage_class:"COLDLINE"puts"Created bucket#{bucket.name} in#{bucket.location} with#{bucket.storage_class} class"end

Terraform

You can use aTerraform resource to create a storage bucket.

# Create new storage bucket in the US multi-region# with coldline storageresource "random_id" "bucket_prefix" {  byte_length = 8}resource "google_storage_bucket" "static" {  name          = "${random_id.bucket_prefix.hex}-new-bucket"  location      = "US"  storage_class = "COLDLINE"  uniform_bucket_level_access = true}

REST APIs

JSON API

  1. Have gcloud CLIinstalled and initialized, which lets you generate an access token for theAuthorization header.

  2. Create a JSON file that contains the settings for the bucket, whichmust include aname for the bucket. See theBuckets:Insertdocumentation for a complete list of settings. The following arecommon settings to include:

    {"name":"BUCKET_NAME","location":"BUCKET_LOCATION","storageClass":"STORAGE_CLASS","iamConfiguration":{"uniformBucketLevelAccess":{"enabled":true},}}

    Where:

    • BUCKET_NAME is the name you want to giveyour bucket, subject tonaming requirements. For example,my-bucket.

    • BUCKET_LOCATION is thelocation whereyou want to store your bucket'sobject data. For example,US.

      Note: When creating aconfigurable dual-region, you mustset thelocation parameter to be thelocation codeassociated with the underlying regions, and you must alsoinclude acustomPlacementConfig parameter.
    • STORAGE_CLASS is the defaultstorage class of your bucket. For example,STANDARD.

  3. UsecURL to call theJSON API:

    curl -X POST --data-binary @JSON_FILE_NAME \ -H "Authorization: Bearer $(gcloud auth print-access-token)" \ -H "Content-Type: application/json" \ "https://storage.googleapis.com/storage/v1/b?project=PROJECT_IDENTIFIER"

    Where:

    • JSON_FILE_NAME is name of the JSON fileyou created in Step 2.
    • PROJECT_IDENTIFIER is the ID or number ofthe project with which your bucket will be associated. Forexample,my-project.

XML API

  1. Have gcloud CLIinstalled and initialized, which lets you generate an access token for theAuthorization header.

  2. Create an XML file that contains settings for the bucket. See theXML: Create a bucket documentation for a complete list ofsettings. The following are common settings to include:

    <CreateBucketConfiguration>  <StorageClass>STORAGE_CLASS</StorageClass>  <LocationConstraint>BUCKET_LOCATION</LocationConstraint></CreateBucketConfiguration>

    Where:

    • STORAGE_CLASS is the defaultstorage class of your bucket. For example,STANDARD.

    • BUCKET_LOCATION is thelocation whereyou want to store your bucket'sobject data. For example,US.

      Note: When creating aconfigurable dual-region, you mustset the<LocationConstraint> element to be thelocationcode associated with the underlying regions, and you must alsoinclude a<CustomPlacementConfig> element.
  3. UsecURL to call theXML API:

    curl -X PUT --data-binary @XML_FILE_NAME \  -H "Authorization: Bearer $(gcloud auth print-access-token)" \  -H "x-goog-project-id:PROJECT_ID" \  "https://storage.googleapis.com/BUCKET_NAME"

    Where:

    • XML_FILE_NAME is name of the XML file youcreated in Step 2.
    • PROJECT_ID is the ID of the project withwhich your bucket will be associated. For example,my-project.
    • BUCKET_NAME is the name you want to giveyour bucket, subject tonaming requirements. For example,my-bucket.

    If the request was successful, a response is not returned.

What's next

Try it for yourself

If you're new to Google Cloud, create an account to evaluate how Cloud Storage performs in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.

Try Cloud Storage free

Except as otherwise noted, the content of this page is licensed under theCreative Commons Attribution 4.0 License, and code samples are licensed under theApache 2.0 License. For details, see theGoogle Developers Site Policies. Java is a registered trademark of Oracle and/or its affiliates.

Last updated 2026-02-19 UTC.