Creating a bucket in Google Cloud Storage using Python
Start your free 7-days trial now!
Prerequisites
To follow along with this guide, please make sure to have:
created a GCP project
created a service account and downloaded the private key (JSON file) for authentication (please check out my detailed guide)
installed the Python client library for Google Cloud Storage (GCS):
pip install --upgrade google-cloud-storage
Creating a bucket in Google Cloud Storage with default settings
To create a bucket in Google Cloud Storage (GCS), use the create_bucket(~)
method:
from google.cloud import storage# The private JSON key of the service accountpath_to_private_key = './gcs-project-354207-099ef6796af6.json'client = storage.Client.from_service_account_json(json_credentials_path=path_to_private_key)
bucket = client.create_bucket('test-bucket-skytowner')print(f'Bucket with name [{bucket.name}] created on GCS!')
Bucket with name [test-bucket-skytowner] created on GCS!
Here, create_bucket(~)
returns the newly created bucket.
If the bucket with the name already exists, then an error will be thrown:
Conflict: 409 POST https://storage.googleapis.com/storage/v1/b?project=gcs-project-354207&prettyPrint=false:Your previous request to create the named bucket succeeded and you already own it.
Note the following limitations of buckets:
bucket names must be globally unique, that is, the name must not clash with any other existing bucket name used by any user in the world
the bucket name cannot be changed later.
the default storage class is
STANDARD
and the location type is multi-region (US). These settings also cannot be changed later.
Please refer to our GCS guide for a detailed discussion on bucket storages classes and location types.
If we head over to the web console of GCS, then we should see our newly created bucket:
Creating a bucket with custom location type and storage class in Google Cloud Storage
To create a bucket with a custom location type and storage class, create a bucket
object first using the Bucket
constructor, and then set the location
and storage_class
properties like so:
from google.cloud import storage
path_to_private_key = './gcs-project-354207-099ef6796af6.json'client = storage.Client.from_service_account_json(json_credentials_path=path_to_private_key)bucket = storage.Bucket(client, "my-demo-bucket-skytowner")bucket.storage_class = "COLDLINE"bucket = client.create_bucket(bucket, location="europe-west6")
Once running this code, we can confirm on the GCS web console that the newly created bucket has our specified location and storage class:
Note that COLDLINE
is a storage class used for infrequently accessed data.
For a full list of locations to set up your bucket, please consult the official documentation hereopen_in_new.