To get the permissions that you need to delete objects, ask your administratorto grant you the Storage Object User (roles/storage.objectUser
)IAM role for the bucket that contains the objects you want todelete.
If you plan on using the Google Cloud console to complete the tasks on thispage, 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 rolein addition to the Storage Object User (roles/storage.objectUser
) role.
These roles contain the permissions required to delete objects. To see theexact permissions that are required, expand the Required permissionssection:
Complete the following steps to delete objects from one of yourCloud Storage buckets:
Console
- In the Google Cloud console, go to the Cloud Storage Buckets page.
Go to Buckets
In the list of buckets, click the name of the bucket that containsthe objects you want to delete.
The Bucket details page opens, with the Objects tab selected.
Navigate to the objects, which may be located in a folder.
Click the checkbox for each object you want to delete.
You can also click the checkbox for folders, which will delete allobjects contained in that folder.
Click the Delete button.
Click Delete in the dialog that appears.
If you delete many objects at once, you can track deletion progress byclicking the Notifications icon in the Google Cloud console. TheGoogle Cloud console can bulk delete up to several million objectsand 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 containingthe object you want to delete. For example,my-bucket
.OBJECT_NAME
is the name of the object you wantto 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
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 a local development environment. 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 a local development environment. 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 a local development environment. 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 a local development environment. 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 a local development environment. 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 a local development environment. 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 a local development environment. 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 a local development environment. C++
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#
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
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
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
/** * 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 libraryconst {Storage} = require('@google-cloud/storage');// Creates a clientconst 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
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
from google.cloud import storagedef 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
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
Have gcloud CLI installed and initialized, in order to generate an access token for the
Authorization
header.Alternatively, you can create an access token using theOAuth 2.0 Playgroundand include it in the
Authorization
header.Use
cURL
to call the JSON API with a DELETErequest: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 bucketcontaining the object you want to delete. For example,my-bucket
.OBJECT_NAME
is the URL-encoded name ofthe object you want to delete. For example,pets/dog.png
,URL-encoded aspets%2Fdog.png
.
XML API
Have gcloud CLI installed and initialized, in order to generate an access token for the
Authorization
header.Alternatively, you can create an access token using theOAuth 2.0 Playgroundand include it in the
Authorization
header.Use
cURL
to call the XML API with aDELETE 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 bucketcontaining the object you want to delete. For example,my-bucket
.OBJECT_NAME
is the URL-encoded name ofthe object you want to delete. For example,pets/dog.png
,URL-encoded aspets%2Fdog.png
.
If you want to bulk delete a hundred thousand or more objects, avoid usinggcloud storage
, as the process takes a long time to complete.Instead, consider one of the following options: