Delete objects

This page shows you how to delete objects from your buckets in Cloud Storage.

Required roles

To get the permissions that you need to delete objects, ask your administrator to grant you the Storage Object User ( roles/storage.objectUser ) IAM role for the bucket that contains the objects you want to delete.

If you plan on using the Google Cloud console to complete the tasks on this page, ask your administrator to grant you the Storage Admin ( roles/storage.admin ) role instead of the Storage Object User ( roles/storage.objectUser ) role, or the Viewer ( roles/viewer ) basic role in addition to the Storage Object User ( roles/storage.objectUser ) role.

These roles contain the permissions required to delete objects. To see the exact permissions that are required, expand the Required permissionssection:

Required permissions

  • storage.objects.delete
  • storage.objects.list
    • This permission is only needed when using the Google Cloud console, or when using the --recursive flag or wildcards in Google Cloud CLI.
  • storage.buckets.list
    • This permission is only needed when using the Google Cloud console to perform the instructions on this page.

You can also get these permissions with other predefined roles or custom roles .

For information about granting roles on buckets, see Use IAM with buckets .

Delete an object

Complete the following steps to delete objects from one of your Cloud Storage buckets:

Console

  1. In the Google Cloud console, go to the Cloud Storage Buckets page.

    Go to Buckets

  2. In the list of buckets, click the name of the bucket that contains the objects you want to delete.

    The Bucket detailspage opens, with the Objectstab selected.

  3. Navigate to the objects, which may be located in a folder.

  4. Click the checkbox for each object you want to delete.

    You can also click the checkbox for folders, which will delete all objects contained in that folder.

  5. Click the Deletebutton.

  6. Click Deletein the dialog that appears.

If you delete many objects at once, you can track deletion progress by clicking the Notificationsicon in the Google Cloud console. The Google Cloud console can bulk delete up to several million objects and does so in the background.

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

Command line

Use the Google Cloud CLI command gcloud storage rm :

gcloud storage rm gs:// BUCKET_NAME 
/ OBJECT_NAME 

Where:

  • BUCKET_NAME is the name of the bucket containing the object you want to delete. For example, my-bucket .
  • OBJECT_NAME is the name of the object you want to delete. For example, pets/dog.png .

If successful, the response is similar to the following example:

Removing objects:
Removing gs://example-bucket/file.txt...
  Completed 1/1

Client libraries

C++

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 .

  namespace 
  
 gcs 
  
 = 
  
 :: 
 google 
 :: 
 cloud 
 :: 
 storage 
 ; 
 []( 
 gcs 
 :: 
 Client 
  
 client 
 , 
  
 std 
 :: 
 string 
  
 const 
&  
 bucket_name 
 , 
  
 std 
 :: 
 string 
  
 const 
&  
 object_name 
 ) 
  
 { 
  
 google 
 :: 
 cloud 
 :: 
 Status 
  
 status 
  
 = 
  
 client 
 . 
 DeleteObject 
 ( 
 bucket_name 
 , 
  
 object_name 
 ); 
  
 if 
  
 ( 
 ! 
 status 
 . 
 ok 
 ()) 
  
 throw 
  
 std 
 :: 
 runtime_error 
 ( 
 status 
 . 
 message 
 ()); 
  
 std 
 :: 
 cout 
 << 
 "Deleted " 
 << 
 object_name 
 << 
 " in bucket " 
 << 
 bucket_name 
 << 
 " 
 \n 
 " 
 ; 
 } 
 

C#

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 .

  using 
  
  Google.Cloud.Storage.V1 
 
 ; 
 using 
  
 System 
 ; 
 public 
  
 class 
  
 DeleteFileSample 
 { 
  
 public 
  
 void 
  
 DeleteFile 
 ( 
  
 string 
  
 bucketName 
  
 = 
  
 "your-unique-bucket-name" 
 , 
  
 string 
  
 objectName 
  
 = 
  
 "your-object-name" 
 ) 
  
 { 
  
 var 
  
 storage 
  
 = 
  
  StorageClient 
 
 . 
  Create 
 
 (); 
  
 storage 
 . 
 DeleteObject 
 ( 
 bucketName 
 , 
  
 objectName 
 ); 
  
 Console 
 . 
 WriteLine 
 ( 
 $"Deleted {objectName}." 
 ); 
  
 } 
 } 
 

Go

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 .

  import 
  
 ( 
  
 "context" 
  
 "fmt" 
  
 "io" 
  
 "time" 
  
 "cloud.google.com/go/storage" 
 ) 
 // deleteFile removes specified object. 
 func 
  
 deleteFile 
 ( 
 w 
  
 io 
 . 
  Writer 
 
 , 
  
 bucket 
 , 
  
 object 
  
 string 
 ) 
  
 error 
  
 { 
  
 // bucket := "bucket-name" 
  
 // object := "object-name" 
  
 ctx 
  
 := 
  
 context 
 . 
 Background 
 () 
  
 client 
 , 
  
 err 
  
 := 
  
 storage 
 . 
 NewClient 
 ( 
 ctx 
 ) 
  
 if 
  
 err 
  
 != 
  
 nil 
  
 { 
  
 return 
  
 fmt 
 . 
 Errorf 
 ( 
 "storage.NewClient: %w" 
 , 
  
 err 
 ) 
  
 } 
  
 defer 
  
 client 
 . 
 Close 
 () 
  
 ctx 
 , 
  
 cancel 
  
 := 
  
 context 
 . 
 WithTimeout 
 ( 
 ctx 
 , 
  
 time 
 . 
 Second 
 * 
 10 
 ) 
  
 defer 
  
 cancel 
 () 
  
 o 
  
 := 
  
 client 
 . 
  Bucket 
 
 ( 
 bucket 
 ). 
  Object 
 
 ( 
 object 
 ) 
  
 // Optional: set a generation-match precondition to avoid potential race 
  
 // conditions and data corruptions. The request to delete the file is aborted 
  
 // if the object's generation number does not match your precondition. 
  
 attrs 
 , 
  
 err 
  
 := 
  
 o 
 . 
 Attrs 
 ( 
 ctx 
 ) 
  
 if 
  
 err 
  
 != 
  
 nil 
  
 { 
  
 return 
  
 fmt 
 . 
 Errorf 
 ( 
 "object.Attrs: %w" 
 , 
  
 err 
 ) 
  
 } 
  
 o 
  
 = 
  
 o 
 . 
 If 
 ( 
 storage 
 . 
  Conditions 
 
 { 
 GenerationMatch 
 : 
  
 attrs 
 . 
  Generation 
 
 }) 
  
 if 
  
 err 
  
 := 
  
 o 
 . 
 Delete 
 ( 
 ctx 
 ); 
  
 err 
  
 != 
  
 nil 
  
 { 
  
 return 
  
 fmt 
 . 
 Errorf 
 ( 
 "Object(%q).Delete: %w" 
 , 
  
 object 
 , 
  
 err 
 ) 
  
 } 
  
 fmt 
 . 
 Fprintf 
 ( 
 w 
 , 
  
 "Blob %v deleted.\n" 
 , 
  
 object 
 ) 
  
 return 
  
 nil 
 } 
 

Java

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 .

  import 
  
 com.google.cloud.storage. Blob 
 
 ; 
 import 
  
 com.google.cloud.storage. BlobId 
 
 ; 
 import 
  
 com.google.cloud.storage. Storage 
 
 ; 
 import 
  
 com.google.cloud.storage. StorageOptions 
 
 ; 
 public 
  
 class 
 DeleteObject 
  
 { 
  
 public 
  
 static 
  
 void 
  
 deleteObject 
 ( 
 String 
  
 projectId 
 , 
  
 String 
  
 bucketName 
 , 
  
 String 
  
 objectName 
 ) 
  
 { 
  
 // The ID of your GCP project 
  
 // String projectId = "your-project-id"; 
  
 // The ID of your GCS bucket 
  
 // String bucketName = "your-unique-bucket-name"; 
  
 // The ID of your GCS object 
  
 // String objectName = "your-object-name"; 
  
  Storage 
 
  
 storage 
  
 = 
  
  StorageOptions 
 
 . 
 newBuilder 
 (). 
 setProjectId 
 ( 
 projectId 
 ). 
 build 
 (). 
  getService 
 
 (); 
  
  Blob 
 
  
 blob 
  
 = 
  
 storage 
 . 
  get 
 
 ( 
 bucketName 
 , 
  
 objectName 
 ); 
  
 if 
  
 ( 
 blob 
  
 == 
  
 null 
 ) 
  
 { 
  
 System 
 . 
 out 
 . 
 println 
 ( 
 "The object " 
  
 + 
  
 objectName 
  
 + 
  
 " wasn't found in " 
  
 + 
  
 bucketName 
 ); 
  
 return 
 ; 
  
 } 
  
  BlobId 
 
  
 idWithGeneration 
  
 = 
  
 blob 
 . 
  getBlobId 
 
 (); 
  
 // Deletes the blob specified by its id. When the generation is present and non-null it will be 
  
 // specified in the request. 
  
 // If versioning is enabled on the bucket and the generation is present in the delete request, 
  
 // only the version of the object with the matching generation will be deleted. 
  
 // If instead you want to delete the current version, the generation should be dropped by 
  
 // performing the following. 
  
 // BlobId idWithoutGeneration = 
  
 //    BlobId.of(idWithGeneration.getBucket(), idWithGeneration.getName()); 
  
 // storage.delete(idWithoutGeneration); 
  
 storage 
 . 
  delete 
 
 ( 
 idWithGeneration 
 ); 
  
 System 
 . 
 out 
 . 
 println 
 ( 
 "Object " 
  
 + 
  
 objectName 
  
 + 
  
 " was permanently deleted from " 
  
 + 
  
 bucketName 
 ); 
  
 } 
 } 
 

Node.js

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 .

  /** 
 * TODO(developer): Uncomment the following lines before running the sample. 
 */ 
 // The ID of your GCS bucket 
 // const bucketName = 'your-unique-bucket-name'; 
 // The ID of your GCS file 
 // const fileName = 'your-file-name'; 
 // Imports the Google Cloud client library 
 const 
  
 { 
 Storage 
 } 
  
 = 
  
 require 
 ( 
 ' @google-cloud/storage 
' 
 ); 
 // Creates a client 
 const 
  
 storage 
  
 = 
  
 new 
  
 Storage 
 (); 
 // Optional: 
 // Set a generation-match precondition to avoid potential race conditions 
 // and data corruptions. The request to delete is aborted if the object's 
 // generation number does not match your precondition. For a destination 
 // object that does not yet exist, set the ifGenerationMatch precondition to 0 
 // If the destination object already exists in your bucket, set instead a 
 // generation-match precondition using its generation number. 
 const 
  
 deleteOptions 
  
 = 
  
 { 
  
 ifGenerationMatch 
 : 
  
 generationMatchPrecondition 
 , 
 }; 
 async 
  
 function 
  
 deleteFile 
 () 
  
 { 
  
 await 
  
 storage 
 . 
 bucket 
 ( 
 bucketName 
 ). 
 file 
 ( 
 fileName 
 ). 
 delete 
 ( 
 deleteOptions 
 ); 
  
 console 
 . 
 log 
 ( 
 `gs:// 
 ${ 
 bucketName 
 } 
 / 
 ${ 
 fileName 
 } 
 deleted` 
 ); 
 } 
 deleteFile 
 (). 
 catch 
 ( 
 console 
 . 
 error 
 ); 
 

PHP

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 .

  use Google\Cloud\Storage\StorageClient; 
 /** 
 * Delete an object. 
 * 
 * @param string $bucketName The name of your Cloud Storage bucket. 
 *        (e.g. 'my-bucket') 
 * @param string $objectName The name of your Cloud Storage object. 
 *        (e.g. 'my-object') 
 */ 
 function delete_object(string $bucketName, string $objectName): void 
 { 
 $storage = new StorageClient(); 
 $bucket = $storage->bucket($bucketName); 
 $object = $bucket->object($objectName); 
 $object->delete(); 
 printf('Deleted gs://%s/%s' . PHP_EOL, $bucketName, $objectName); 
 } 
 

Python

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 .

  from 
  
 google.cloud 
  
 import 
  storage 
 
 def 
  
 delete_blob 
 ( 
 bucket_name 
 , 
 blob_name 
 ): 
  
 """Deletes a blob from the bucket.""" 
 # bucket_name = "your-bucket-name" 
 # blob_name = "your-object-name" 
 storage_client 
 = 
  storage 
 
 . 
  Client 
 
 () 
 bucket 
 = 
 storage_client 
 . 
  bucket 
 
 ( 
 bucket_name 
 ) 
 blob 
 = 
 bucket 
 . 
 blob 
 ( 
 blob_name 
 ) 
 generation_match_precondition 
 = 
 None 
 # Optional: set a generation-match precondition to avoid potential race conditions 
 # and data corruptions. The request to delete is aborted if the object's 
 # generation number does not match your precondition. 
 blob 
 . 
 reload 
 () 
 # Fetch blob metadata to use in generation_match_precondition. 
 generation_match_precondition 
 = 
 blob 
 . 
 generation 
 blob 
 . 
 delete 
 ( 
 if_generation_match 
 = 
 generation_match_precondition 
 ) 
 print 
 ( 
 f 
 "Blob 
 { 
 blob_name 
 } 
 deleted." 
 ) 
 

Ruby

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 .

  def 
  
 delete_file 
  
 bucket_name 
 :, 
  
 file_name 
 : 
  
 # The ID of your GCS bucket 
  
 # bucket_name = "your-unique-bucket-name" 
  
 # The ID of your GCS object 
  
 # file_name = "your-file-name" 
  
 require 
  
 "google/cloud/storage" 
  
 storage 
  
 = 
  
 Google 
 :: 
 Cloud 
 :: 
  Storage 
 
 . 
  new 
 
  
 bucket 
  
 = 
  
 storage 
 . 
 bucket 
  
 bucket_name 
 , 
  
 skip_lookup 
 : 
  
 true 
  
 file 
  
 = 
  
 bucket 
 . 
  file 
 
  
 file_name 
  
 file 
 . 
 delete 
  
 puts 
  
 "Deleted 
 #{ 
 file 
 . 
 name 
 } 
 " 
 end 
 

REST APIs

JSON API

  1. Have gcloud CLI installed and initialized , which lets you generate an access token for the Authorization header.

  2. Use cURL to call the JSON API with a DELETE request:

    curl -X DELETE \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      "https://storage.googleapis.com/storage/v1/b/ BUCKET_NAME 
    /o/ OBJECT_NAME 
    "

    Where:

    • BUCKET_NAME is the name of the bucket containing the object you want to delete. For example, my-bucket .
    • OBJECT_NAME is the URL-encoded name of the object you want to delete. For example, pets/dog.png , URL-encoded as pets%2Fdog.png .

XML API

  1. Have gcloud CLI installed and initialized , which lets you generate an access token for the Authorization header.

  2. Use cURL to call the XML API with a DELETE Object request:

    curl -X DELETE \
      -H "Authorization: Bearer $(gcloud auth print-access-token)" \
      "https://storage.googleapis.com/ BUCKET_NAME 
    / OBJECT_NAME 
    "

    Where:

    • BUCKET_NAME is the name of the bucket containing the object you want to delete. For example, my-bucket .
    • OBJECT_NAME is the URL-encoded name of the object you want to delete. For example, pets/dog.png , URL-encoded as pets%2Fdog.png .

Delete objects in bulk

If you want to bulk delete a hundred thousand or more objects, avoid using gcloud storage , as the process takes a long time to complete. Instead, consider one of the following options:

  • The Object Lifecycle Management feature can delete any number of objects. To bulk delete objects in your bucket using this feature, set a lifecycle configuration rule on your bucket where the condition has Age set to 0 days and the action is set to delete . Once you set the rule, Cloud Storage performs the bulk delete asynchronously .

  • The Google Cloud console is also a recommended option when deleting up to one million objects. Once you initiate such a deletion request, the process occurs in the background. You can check the status of your bulk deletion by clicking the Notificationsbutton ( ) in the Google Cloud console header.

  • When using certain client libraries or when using the JSON API directly, you can batch your deletion requests to reduce the number of HTTP connections you need to make.

What's next

Design a Mobile Site
View Site in Mobile | Classic
Share by: