Objekte löschen

Auf dieser Seite wird beschrieben, wie Sie in Cloud Storage Objekte aus Buckets löschen.

Hinweise

Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle Storage-Objekt-Nutzer (roles/storage.objectUser) für den Bucket zuzuweisen, der die zu löschenden Objekte enthält, um die Berechtigungen zu erhalten, die Sie zum Löschen benötigen.

Wenn Sie die Google Cloud Console zum Ausführen der Aufgaben auf dieser Seite verwenden möchten, bitten Sie Ihren Administrator, Ihnen die Rolle Storage-Administrator (roles/storage.admin) anstelle Storage-Objekt-Nutzer (roles/storage.objectUser) oder die einfache Rolle Betrachter (roles/viewer) zusätzlich zur Rolle Storage-Objekt-Nutzer (roles/storage.objectUser) zuzuweisen.

Diese Rollen enthalten die folgenden Berechtigungen, die zum Löschen von Objekten erforderlich sind:

  • storage.objects.delete

  • storage.objects.list

    • Diese Berechtigung ist nur erforderlich, wenn Sie die Google Cloud Console oder das Flag --recursive oder Platzhalter in der Google Cloud CLI verwenden.
  • storage.buckets.list

    • Diese Berechtigung ist nur erforderlich, wenn Sie die Anweisungen auf dieser Seite in der Google Cloud Console ausführen.

Sie können diese Berechtigungen auch mit anderen vordefinierten Rollen oder benutzerdefinierten Rollen erhalten.

Informationen zum Zuweisen von Rollen für Buckets finden Sie unter IAM mit Buckets verwenden.

Objekt löschen

Führen Sie die folgenden Schritte aus, um Objekte aus einem Cloud Storage-Bucket zu löschen:

Console

  1. Wechseln Sie in der Cloud Console zur Seite Cloud Storage-Buckets.

    Buckets aufrufen

  2. Klicken Sie in der Liste der Buckets auf den Bucket, der die Objekte enthält, die Sie löschen möchten.

    Die Seite Bucket-Details wird geöffnet und der Tab Objekte ist ausgewählt.

  3. Wechseln Sie zu den Objekten. Diese befinden sich möglicherweise in einem Ordner.

  4. Klicken Sie auf das Kästchen für jedes Objekt, das Sie löschen möchten.

    Sie können auch auf das Kästchen für Ordner klicken, wodurch alle in diesem Ordner enthaltenen Objekte gelöscht werden.

  5. Klicken Sie auf Löschen.

  6. Klicken Sie im daraufhin angezeigten Dialogfeld auf Löschen.

Wenn Sie viele Objekte gleichzeitig löschen, können Sie den Löschfortschritt verfolgen. Klicken Sie dazu in der Google Cloud Console auf das Symbol Benachrichtigungen. Die Google Cloud Console kann im Hintergrund bis zu mehrere Millionen Objekte im Bulk löschen.

Unter Fehlerbehebung erfahren Sie, wie Sie detaillierte Fehlerinformationen zu fehlgeschlagenen Cloud Storage-Vorgängen in der Google Cloud Console abrufen.

Befehlszeile

Verwenden Sie den Google Cloud CLI-Befehl gcloud storage rm:

gcloud storage rm gs://BUCKET_NAME/OBJECT_NAME

Dabei gilt:

  • BUCKET_NAME ist der Name des Buckets, der das zu löschende Objekt enthält. Beispiel: my-bucket.
  • OBJECT_NAME ist der Name des Objekts, das Sie löschen möchten. Beispiel: pets/dog.png.

Wenn der Vorgang erfolgreich war, sieht die Antwort in etwa so aus:

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

Clientbibliotheken

C++

Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage C++ API.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Storage zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

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#

Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage C# API.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Storage zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.


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

Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Go API.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Storage zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

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

Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Java API.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Storage zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

import com.google.cloud.storage.Blob;
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;
    }

    // Optional: set a generation-match precondition to avoid potential race
    // conditions and data corruptions. The request to upload returns a 412 error if
    // the object's generation number does not match your precondition.
    Storage.BlobSourceOption precondition =
        Storage.BlobSourceOption.generationMatch(blob.getGeneration());

    storage.delete(bucketName, objectName, precondition);

    System.out.println("Object " + objectName + " was deleted from " + bucketName);
  }
}

Node.js

Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Node.js API.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Storage zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

/**
 * 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

Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage PHP API.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Storage zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

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

Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Python API.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Storage zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

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

Weitere Informationen finden Sie in der Referenzdokumentation zur Cloud Storage Ruby API.

Richten Sie die Standardanmeldedaten für Anwendungen ein, um sich bei Cloud Storage zu authentifizieren. Weitere Informationen finden Sie unter Authentifizierung für eine lokale Entwicklungsumgebung einrichten.

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. Rufen Sie ein Zugriffstoken für die Autorisierung aus dem OAuth 2.0 Playground ab. Konfigurieren Sie den Playground so, dass Ihre eigenen OAuth-Anmeldedaten verwendet werden. Eine Anleitung finden Sie unter API-Authentifizierung.
  2. Verwenden Sie cURL, um die JSON API mit einer DELETE-Anfrage aufzurufen:

    curl -X DELETE \
      -H "Authorization: Bearer OAUTH2_TOKEN" \
      "https://storage.googleapis.com/storage/v1/b/BUCKET_NAME/o/OBJECT_NAME"

    Dabei gilt:

    • OAUTH2_TOKEN ist der Name des Zugriffstokens, das Sie in Schritt 1 generiert haben.
    • BUCKET_NAME ist der Name des Buckets, der das zu löschende Objekt enthält. Beispiel: my-bucket
    • OBJECT_NAME ist der URL-codierte Name des Objekts, das Sie löschen möchten. Beispiel: pets/dog.png, URL-codiert als pets%2Fdog.png.

XML API

  1. Rufen Sie ein Zugriffstoken für die Autorisierung aus dem OAuth 2.0 Playground ab. Konfigurieren Sie den Playground so, dass Ihre eigenen OAuth-Anmeldedaten verwendet werden. Eine Anleitung finden Sie unter API-Authentifizierung.
  2. Verwenden Sie cURL, um die XML API mit einer DELETE Object-Anfrage aufzurufen:

    curl -X DELETE \
      -H "Authorization: Bearer OAUTH2_TOKEN" \
      "https://storage.googleapis.com/BUCKET_NAME/OBJECT_NAME"

    Dabei gilt:

    • OAUTH2_TOKEN ist der Name des Zugriffstokens, das Sie in Schritt 1 generiert haben.
    • BUCKET_NAME ist der Name des Buckets, der das zu löschende Objekt enthält. Beispiel: my-bucket
    • OBJECT_NAME ist der URL-codierte Name des Objekts, das Sie löschen möchten. Beispiel: pets/dog.png, URL-codiert als pets%2Fdog.png.

Objekte im Bulk löschen

Wenn Sie mehrere Hunderttausend Objekte im Bulk löschen möchten, sollten Sie gcloud storage nicht verwenden, da der Vorgang sehr lange dauert. Verwenden Sie stattdessen eine der folgenden Optionen:

  • Mit der Funktion Verwaltung des Objektlebenszyklus können Sie eine beliebige Anzahl von Objekten löschen. Wenn Sie Objekte in Ihrem Bucket mithilfe dieser Funktion im Bulk löschen möchten, legen Sie eine Regel für die Lebenszykluskonfiguration für den Bucket fest, wobei Age auf 0 Tage und die Aktion auf delete festgelegt ist. Nachdem Sie die Regel festgelegt haben, löscht Cloud Storage den Bulk-Löschvorgang asynchron.

  • Die Google Cloud Console ist auch eine empfohlene Option, wenn Sie bis zu eine Million Objekte löschen. Sobald Sie eine solche Löschanfrage initiiert haben, wird der Vorgang im Hintergrund ausgeführt. Sie können den Status des Bulk-Löschvorgangs prüfen. Klicken Sie dazu im Google Cloud Console-Header auf die Schaltfläche Benachrichtigungen ().

  • Wenn Sie bestimmte Clientbibliotheken verwenden oder die JSON API direkt verwenden, können Sie die Löschanfragen im Batch zusammenfassen, um die Anzahl der erforderlichen HTTP-Verbindungen zu reduzieren.

Nächste Schritte