Delete buckets
This page shows you how to delete Cloud Storage buckets.
If you delete a bucket that has soft delete enabled, you can restore the bucket or individual objects from the bucket during the retention duration specified in the soft delete policy. Managed folders cannot be recovered, even if the bucket has soft delete enabled.
Before you begin
In order to get the required permissions for deleting a Cloud Storage
bucket, ask your administrator to grant you the Storage Admin
(roles/storage.admin) IAM role on the bucket.
This predefined role contains the permissions required to delete a bucket. To see the exact permissions that are required, expand the Required permissions section:
Required permissions
-
storage.buckets.delete -
storage.buckets.list- This permission is only required when deleting buckets using the Google Cloud console.
-
storage.objects.delete- This permission is only required if objects exist within the bucket you want to delete.
-
storage.objects.list- This permission is only required for deleting buckets using the Google Cloud console or the Google Cloud CLI.
You might also be able to get these permissions with other custom roles or predefined roles.
For instructions on granting roles for buckets, see Set and manage IAM policies on buckets.
Delete a bucket
Console
When you delete a bucket using the Google Cloud console, resources within the bucket are also deleted, such as objects, managed folders, and caches created with Anywhere Cache.
- In the Google Cloud console, go to the Cloud Storage Buckets page.
Select the checkbox of the bucket you want to delete.
Click Delete.
In the overlay window that appears, confirm you want to delete the bucket and its contents.
Click Delete.
To learn how to get detailed error information about failed Cloud Storage operations in the Google Cloud console, see Troubleshooting.
Command line
To delete the bucket, along with all the contents within the bucket,
use the Google Cloud CLI command gcloud storage rm with
the --recursive flag:
gcloud storage rm --recursive gs://BUCKET_NAME
Where BUCKET_NAME is the name of the bucket to
delete. For example, my-bucket.
If successful, the response looks like the following example:
Removing gs://my-bucket/...
If you want to avoid accidentally deleting objects or managed folders,
use the gcloud storage buckets delete command, which only deletes a
bucket if the bucket is empty.
Client libraries
For more information, see the
Cloud Storage C++ API
reference documentation.
To authenticate to Cloud Storage, set up Application Default Credentials.
For more information, see
Set up authentication for client libraries.
For more information, see the
Cloud Storage C# API
reference documentation.
To authenticate to Cloud Storage, set up Application Default Credentials.
For more information, see
Set up authentication for client libraries.
For more information, see the
Cloud Storage Go API
reference documentation.
To authenticate to Cloud Storage, set up Application Default Credentials.
For more information, see
Set up authentication for client libraries.
For more information, see the
Cloud Storage Java API
reference documentation.
To authenticate to Cloud Storage, set up Application Default Credentials.
For more information, see
Set up authentication for client libraries.
For more information, see the
Cloud Storage Node.js API
reference documentation.
To authenticate to Cloud Storage, set up Application Default Credentials.
For more information, see
Set up authentication for client libraries.
For more information, see the
Cloud Storage PHP API
reference documentation.
To authenticate to Cloud Storage, set up Application Default Credentials.
For more information, see
Set up authentication for client libraries.
For more information, see the
Cloud Storage Python API
reference documentation.
To authenticate to Cloud Storage, set up Application Default Credentials.
For more information, see
Set up authentication for client libraries.
For more information, see the
Cloud Storage Ruby API
reference documentation.
To authenticate to Cloud Storage, set up Application Default Credentials.
For more information, see
Set up authentication for client libraries.
C++
namespacegcs=::google::cloud::storage;
[](gcs::Clientclient,std::stringconst&bucket_name){
google::cloud::Statusstatus=client.DeleteBucket(bucket_name);
if(!status.ok())throwstd::runtime_error(status.message());
std::cout << "The bucket " << bucket_name << " was deleted successfully.\n";
}C#
usingGoogle.Cloud.Storage.V1 ;
usingSystem;
publicclassDeleteBucketSample
{
publicvoidDeleteBucket(stringbucketName="your-unique-bucket-name")
{
varstorage=StorageClient .Create ();
storage.DeleteBucket(bucketName);
Console.WriteLine($"The bucket {bucketName} was deleted.");
}
}Go
import(
"context"
"fmt"
"io"
"time"
"cloud.google.com/go/storage"
)
// deleteBucket deletes the bucket.
funcdeleteBucket(wio.Writer ,bucketNamestring)error{
// 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()
bucket:=client.Bucket (bucketName)
iferr:=bucket.Delete(ctx);err!=nil{
returnfmt.Errorf("Bucket(%q).Delete: %w",bucketName,err)
}
fmt.Fprintf(w,"Bucket %v deleted\n",bucketName)
returnnil
}
Java
importcom.google.cloud.storage.Bucket ;
importcom.google.cloud.storage.Storage ;
importcom.google.cloud.storage.StorageOptions ;
publicclass DeleteBucket{
publicstaticvoiddeleteBucket(StringprojectId,StringbucketName){
// The ID of your GCP project
// String projectId = "your-project-id";
// The ID of the bucket to delete
// String bucketName = "your-unique-bucket-name";
Storage storage=StorageOptions .newBuilder().setProjectId(projectId).build().getService ();
Bucket bucket=storage.get (bucketName);
bucket.delete ();
System.out.println("Bucket "+bucket.getName()+" was deleted");
}
}Node.js
/**
* TODO(developer): Uncomment the following lines before running the sample.
*/
// The ID of your GCS bucket
// const bucketName = 'your-unique-bucket-name';
// Imports the Google Cloud client library
const{Storage}=require('@google-cloud/storage');
// Creates a client
conststorage=newStorage();
asyncfunctiondeleteBucket(){
awaitstorage.bucket(bucketName).delete();
console.log(`Bucket ${bucketName} deleted`);
}
deleteBucket().catch(console.error);PHP
use Google\Cloud\Storage\StorageClient;
/**
* Delete a Cloud Storage Bucket.
*
* @param string $bucketName The name of your Cloud Storage bucket.
* (e.g. 'my-bucket')
*/
function delete_bucket(string $bucketName): void
{
$storage = new StorageClient();
$bucket = $storage->bucket($bucketName);
$bucket->delete();
printf('Bucket deleted: %s' . PHP_EOL, $bucket->name());
}Python
fromgoogle.cloudimport storage
defdelete_bucket(bucket_name):
"""Deletes a bucket. The bucket must be empty."""
# bucket_name = "your-bucket-name"
storage_client = storage .Client ()
bucket = storage_client.get_bucket (bucket_name)
bucket.delete()
print(f"Bucket {bucket.name} deleted")
Ruby
REST APIs
JSON API
Have gcloud CLI installed and initialized, which lets you generate an access token for the
Authorizationheader.Use
cURLto call the JSON API with aDELETEBucket request:curl -X DELETE -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME"
Where
BUCKET_NAMEis the name of the bucket to delete. For example,my-bucket.
If successful, the response contains a 204 status code.
XML API
Have gcloud CLI installed and initialized, which lets you generate an access token for the
Authorizationheader.Use
cURLto call the XML API with aDELETEBucket request:curl -X DELETE -H "Authorization: Bearer $(gcloud auth print-access-token)" \ "https://storage.googleapis.com/BUCKET_NAME"
Where
BUCKET_NAMEis the name of the bucket to delete. For example,my-bucket.
What's next
- Create a bucket.
- Move or rename a bucket.
- List objects in a bucket.
- Delete an object.
- Restore a soft-deleted bucket.