Stay organized with collections
Save and categorize content based on your preferences.
This page provides an overview of Cloud Storage and how it works.
Cloud Storage is a service for storing your objects in
Google Cloud. An object is an immutable piece of data consisting of a file of
any format. You store objects in containers called buckets.
All buckets are associated with a project, and you can group your
projects under an organization. Each project, bucket, managed folder,
and object in Google Cloud is a resource in Google Cloud, as are things such
as Compute Engine instances.
Here's how the Cloud Storage structure can apply to a real-world case:
Organization: Your company, called Example Inc., creates a Google Cloud
organization called exampleinc.org.
Project: Example Inc. is building several applications, and each one is
associated with a project. Each project has its own set of
Cloud Storage APIs, as well as other resources.
Bucket: Each project can contain multiple buckets, which are containers to
store your objects. For example, you might create a photos bucket for all the
image files your app generates and a separate videos bucket.
Object: Each bucket can contain essentially unlimited individual objects,
such as an image called puppy.png.
Managed folder: Each bucket can also contain multiple
managed folders, which grant additional access beyond the access granted
to the overall bucket.
This additional access applies to objects that have a prefix matching the
managed folder name. For example, you might create an animals/ managed folder,
which gives designated users additional access to objects such as
animals/puppy.png and animals/kitten.png.
Hierarchical namespace enabled buckets: Buckets can have
hierarchical namespace enabled. Buckets with hierarchical namespace
enabled can store your data in a logical file system structure. The folder
management operations provide reliability and management capabilities, including
creating, deleting, listing, and renaming folders. Hierarchical namespace is
beneficial for data-intensive tasks like analytics, AI, and ML workloads as they
offer up to 8 times higher initial QPS limits for reading and writing objects
compared to buckets without hierarchical namespace enabled.
Basic tools for Cloud Storage
Here are some basic ways you can interact with Cloud Storage:
Console: The Google Cloud console provides a visual interface for
you to manage your data in a browser.
Client libraries: The Cloud Storage client libraries allow
you to manage your data using one of your preferred languages, including C++,
C#, Go, Java, Node.js, PHP, Python, and Ruby.
REST APIs: Manage your data using the JSON or XML API.
Terraform: Terraform is an infrastructure-as-code (IaC)
tool that you can use to provision the infrastructure for
Cloud Storage.
Cloud Storage FUSE: Cloud Storage FUSE lets you mount Cloud Storage
buckets to your local file system. This enables your applications to read from
a bucket or write to a bucket by using standard file system semantics.
gRPC: gRPC lets you interact with Cloud Storage. gRPC
is a high performance, open source universal RPC framework developed by Google
that you can use to define your services using Protocol Buffers.
Securing your data
Once you upload your objects to Cloud Storage, you have fine-grained
control over how you secure and share your data. Here are some ways to secure
the data you upload to Cloud Storage:
Identity and Access Management: Use IAM to control who has access to the
resources in your Google Cloud project. Resources include Cloud Storage
buckets and objects, as well as other Google Cloud entities such as
Compute Engine instances. You can grant principals certain types of access
to buckets and objects, such as update, create, or delete.
Soft delete: Prevent permanent loss of data against
accidental or malicious deletion by retaining recently deleted objects and
buckets. By default, Cloud Storage enables soft delete
for all buckets with a seven day retention period.
Object Versioning: When a live version of an object is replaced or
deleted, it can be retained as a noncurrent version if you
enable Object Versioning.
Bucket IP filtering: With bucket IP filtering, you
can restrict access to a bucket based on the source IP address of the request
and secure your data from unauthorized access from specific IP addresses or
Virtual Private Cloud (VPC).
Resource names
Each resource has a unique name that identifies it, much like a filename.
Buckets have a resource name in the form of
projects/_/buckets/BUCKET_NAME, where
BUCKET_NAME is the ID of the bucket. Objects have a
resource name in the form of
projects/_/buckets/BUCKET_NAME/objects/OBJECT_NAME,
where OBJECT_NAME is the ID of the object.
A #NUMBER appended to the end of the resource name
indicates a specific generation of the object. #0 is a special identifier for
the most recent version of an object. #0 is useful to add when the name of
the object ends in a string that would otherwise be interpreted as a generation
number.
Quickstart guides
To learn the fundamentals of using Cloud Storage, visit the following
guides:
[[["Easy to understand","easyToUnderstand","thumb-up"],["Solved my problem","solvedMyProblem","thumb-up"],["Other","otherUp","thumb-up"]],[["Hard to understand","hardToUnderstand","thumb-down"],["Incorrect information or sample code","incorrectInformationOrSampleCode","thumb-down"],["Missing the information/samples I need","missingTheInformationSamplesINeed","thumb-down"],["Other","otherDown","thumb-down"]],["Last updated 2025-08-07 UTC."],[],[],null,["# Product overview of Cloud Storage\n\nThis page provides an overview of Cloud Storage and how it works.\n\nCloud Storage is a service for storing your [*objects*](/storage/docs/objects) in\nGoogle Cloud. An object is an immutable piece of data consisting of a file of\nany format. You store objects in containers called [*buckets*](/storage/docs/buckets).\n\nAll buckets are associated with a [*project*](/storage/docs/projects), and you can group your\nprojects under an [*organization*](/resource-manager/docs/cloud-platform-resource-hierarchy#organizations). Each project, bucket, managed folder,\nand object in Google Cloud is a *resource* in Google Cloud, as are things such\nas [Compute Engine instances](/compute/docs/instances).\n\nAfter you create a project, you can [create Cloud Storage buckets](/storage/docs/creating-buckets),\n[upload objects](/storage/docs/uploading-objects) to your buckets, and [download objects](/storage/docs/downloading-objects) from your\nbuckets. You can also grant permissions to make your data accessible to\nprincipals you specify or [accessible to everyone on the public internet](/storage/docs/access-control/making-data-public).\n\nThe Google Cloud hierarchy\n--------------------------\n\nHere's how the Cloud Storage structure can apply to a real-world case:\n\n- **Organization** : Your company, called Example Inc., creates a Google Cloud\n organization called `exampleinc.org`.\n\n- **Project**: Example Inc. is building several applications, and each one is\n associated with a project. Each project has its own set of\n Cloud Storage APIs, as well as other resources.\n\n- **Bucket** : Each project can contain multiple buckets, which are containers to\n store your objects. For example, you might create a `photos` bucket for all the\n image files your app generates and a separate `videos` bucket.\n\n- **Object** : Each bucket can contain essentially unlimited individual objects,\n such as an image called `puppy.png`.\n\n- **Managed folder** : Each bucket can also contain multiple\n [managed folders](/storage/docs/managed-folders), which grant additional access beyond the access granted\n to the overall bucket.\n This additional access applies to objects that have a prefix matching the\n managed folder name. For example, you might create an `animals/` managed folder,\n which gives designated users additional access to objects such as\n `animals/puppy.png` and `animals/kitten.png`.\n\n- **Hierarchical namespace enabled buckets** : Buckets can have\n [hierarchical namespace](/storage/docs/hns-overview) enabled. Buckets with hierarchical namespace\n enabled can store your data in a logical file system structure. The folder\n management operations provide reliability and management capabilities, including\n creating, deleting, listing, and renaming folders. Hierarchical namespace is\n beneficial for data-intensive tasks like analytics, AI, and ML workloads as they\n offer up to 8 times higher initial QPS limits for reading and writing objects\n compared to buckets without hierarchical namespace enabled.\n\nBasic tools for Cloud Storage\n-----------------------------\n\nHere are some basic ways you can interact with Cloud Storage:\n\n- **Console** : The [Google Cloud console](https://console.cloud.google.com/storage/browser) provides a visual interface for\n you to manage your data in a browser.\n\n- **Google Cloud CLI** : The [gcloud CLI](/sdk/gcloud) allows you to interact\n with Cloud Storage through a terminal using\n [`gcloud storage` commands](/sdk/gcloud/reference/storage).\n\n- **Client libraries** : The Cloud Storage [client libraries](/storage/docs/reference/libraries) allow\n you to manage your data using one of your preferred languages, including C++,\n C#, Go, Java, Node.js, PHP, Python, and Ruby.\n\n- **REST APIs** : Manage your data using the [JSON](/storage/docs/json_api) or [XML](/storage/docs/xml-api/overview) API.\n\n- **Terraform** : [Terraform](https://www.terraform.io/) is an infrastructure-as-code (IaC)\n tool that you can use to provision the infrastructure for\n Cloud Storage.\n\n- **Cloud Storage FUSE** : [Cloud Storage FUSE](/storage/docs/gcs-fuse) lets you mount Cloud Storage\n buckets to your local file system. This enables your applications to read from\n a bucket or write to a bucket by using standard file system semantics.\n\n- **gRPC** : [gRPC](/storage/docs/enable-grpc-api) lets you interact with Cloud Storage. gRPC\n is a high performance, open source universal RPC framework developed by Google\n that you can use to define your services using Protocol Buffers.\n\nSecuring your data\n------------------\n\nOnce you upload your objects to Cloud Storage, you have fine-grained\ncontrol over how you secure and share your data. Here are some ways to secure\nthe data you upload to Cloud Storage:\n\n- **Identity and Access Management** : Use [IAM](/storage/docs/access-control/iam) to control who has access to the\n resources in your Google Cloud project. Resources include Cloud Storage\n buckets and objects, as well as other Google Cloud entities such as\n [Compute Engine instances](/compute/docs/instances). You can grant principals certain types of access\n to buckets and objects, such as `update`, `create`, or `delete`.\n\n- **Data encryption** : Cloud Storage uses server-side encryption to\n [encrypt your data](/storage/docs/encryption) by default. You can also use supplemental data\n encryption options such as [customer-managed encryption keys](/storage/docs/encryption/customer-managed-keys) and\n [customer-supplied encryption keys](/storage/docs/encryption/customer-supplied-keys).\n\n- **Authentication** : Ensure that anyone who accesses your data has [proper\n credentials](/storage/docs/authentication).\n\n- **Bucket Lock** : Govern how long objects in buckets must be retained by\n [specifying a retention policy](/storage/docs/using-bucket-lock).\n\n- **Soft delete** : Prevent permanent loss of data against\n accidental or malicious deletion by retaining recently deleted objects and\n buckets. By default, Cloud Storage enables [soft delete](/storage/docs/soft-delete)\n for all buckets with a seven day retention period.\n\n- **Object Versioning** : When a live version of an object is replaced or\n deleted, it can be retained as a *noncurrent version* if you\n [enable Object Versioning](/storage/docs/using-object-versioning).\n\n- **Bucket IP filtering** : With [bucket IP filtering](/storage/docs/ip-filtering-overview), you\n can restrict access to a bucket based on the source IP address of the request\n and secure your data from unauthorized access from specific IP addresses or\n Virtual Private Cloud (VPC).\n\n### Resource names\n\n| **Note:** The use of resource names within Cloud Storage is limited to [Pub/Sub Notifications for Cloud Storage](/storage/docs/pubsub-notifications) and [Identity and Access Management](/storage/docs/access-control/iam).\n\nEach resource has a unique name that identifies it, much like a filename.\nBuckets have a resource name in the form of\n`projects/_/buckets/`\u003cvar translate=\"no\"\u003eBUCKET_NAME\u003c/var\u003e, where\n\u003cvar translate=\"no\"\u003eBUCKET_NAME\u003c/var\u003e is the ID of the bucket. Objects have a\nresource name in the form of\n`projects/_/buckets/`\u003cvar translate=\"no\"\u003eBUCKET_NAME\u003c/var\u003e`/objects/`\u003cvar translate=\"no\"\u003eOBJECT_NAME\u003c/var\u003e,\nwhere \u003cvar translate=\"no\"\u003eOBJECT_NAME\u003c/var\u003e is the ID of the object.\n\nA `#`\u003cvar translate=\"no\"\u003eNUMBER\u003c/var\u003e appended to the end of the resource name\nindicates a specific generation of the object. `#0` is a special identifier for\nthe most recent version of an object. `#0` is useful to add when the name of\nthe object ends in a string that would otherwise be interpreted as a generation\nnumber.\n\nQuickstart guides\n-----------------\n\nTo learn the fundamentals of using Cloud Storage, visit the following\nguides:\n\n- [Google Cloud console quickstart](/storage/docs/discover-object-storage-console)\n- [gcloud quickstart](/storage/docs/discover-object-storage-gcloud)\n- [Terraform quickstart](/storage/docs/terraform-create-bucket-upload-object)\n\nWhat's next\n-----------\n\n- Learn the fundamentals of Cloud Storage through the [Google Cloud console](/storage/docs/discover-object-storage-console) or [Google Cloud CLI](/storage/docs/discover-object-storage-gcloud).\n- Try [Google Cloud jump start solutions that use Cloud Storage](/architecture/storage).\n- Get started with [client libraries](/storage/docs/reference/libraries).\n- Quickly import online data into Cloud Storage or between Cloud Storage buckets using [Storage Transfer Service](/storage-transfer/docs/overview)."]]