Elimina oggetti

Questa pagina mostra come eliminare gli oggetti dai bucket in di archiviazione ideale in Cloud Storage.

Ruoli obbligatori

Per ottenere le autorizzazioni necessarie per eliminare gli oggetti, chiedi all'amministratore per concederti l'utente oggetto Storage (roles/storage.objectUser) ruolo IAM per il bucket che contiene gli oggetti da eliminare.

Se prevedi di utilizzare la console Google Cloud per completare le attività in questa pagina, chiedi all'amministratore di concederti il ruolo Amministratore Storage (roles/storage.admin) anziché il ruolo Utente oggetto Storage (roles/storage.objectUser) o il ruolo di base Visualizzatore (roles/viewer) oltre al ruolo Utente oggetto Storage (roles/storage.objectUser).

Questi ruoli contengono le autorizzazioni necessarie per eliminare gli oggetti. Per vedere le le autorizzazioni esatte richieste, espandi la sezione Autorizzazioni obbligatorie sezione:

Autorizzazioni obbligatorie

  • storage.objects.delete
  • storage.objects.list
    • Questa autorizzazione è necessaria solo quando utilizzi la console Google Cloud oppure quando utilizzi il flag --recursive o i caratteri jolly Google Cloud CLI.
  • storage.buckets.list
    • Questa autorizzazione è necessaria solo quando utilizzi la console Google Cloud per segui le istruzioni in questa pagina.

Puoi ottenere queste autorizzazioni anche con altri ruoli predefiniti o ruoli personalizzati.

Per informazioni sulla concessione dei ruoli ai bucket, consulta Utilizzare IAM con i bucket.

Elimina un oggetto

Per eliminare oggetti da uno dei tuoi bucket Cloud Storage:

Console

  1. Nella console Google Cloud, vai alla pagina Bucket di Cloud Storage.

    Vai a Bucket

  2. Nell'elenco dei bucket, fai clic sul nome del bucket che contiene degli oggetti che vuoi eliminare.

    Si apre la pagina Dettagli bucket, con la scheda Oggetti selezionata.

  3. Accedi agli oggetti che potrebbero trovarsi in una cartella.

  4. Fai clic sulla casella di controllo in corrispondenza di ogni oggetto da eliminare.

    Puoi anche fare clic sulla casella di controllo delle cartelle, che eliminerà tutti gli oggetti contenuti al loro interno.

  5. Fai clic sul pulsante Elimina.

  6. Fai clic su Elimina nella finestra di dialogo visualizzata.

Se elimini molti oggetti contemporaneamente, puoi monitorare l'avanzamento dell'eliminazione facendo clic sull'icona Notifiche nella console Google Cloud. La La console Google Cloud può eliminare in blocco fino a diversi milioni di oggetti e lo fa in background.

Scopri come ottenere informazioni dettagliate sugli errori relativi a Cloud Storage non riusciti nella console Google Cloud, vedi Risoluzione dei problemi.

Riga di comando

Utilizza il comando Google Cloud CLI gcloud storage rm:

gcloud storage rm gs://BUCKET_NAME/OBJECT_NAME

Dove:

  • BUCKET_NAME è il nome del bucket contenente l'oggetto che vuoi eliminare. Ad esempio, my-bucket.
  • OBJECT_NAME è il nome dell'oggetto da eliminare. Ad esempio, pets/dog.png.

Se l'operazione ha esito positivo, la risposta è simile al seguente esempio:

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

Librerie client

C++

Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Cloud Storage C++.

Per autenticarti a Cloud Storage, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.

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#

Per saperne di più, consulta la documentazione di riferimento dell'API Cloud Storage C#.

Per autenticarti a Cloud Storage, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.


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

Per ulteriori informazioni, consulta API Cloud Storage Go documentazione di riferimento.

Per eseguire l'autenticazione su Cloud Storage, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

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

Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Cloud Storage Java.

Per eseguire l'autenticazione su Cloud Storage, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

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

Per ulteriori informazioni, consulta API Cloud Storage Node.js documentazione di riferimento.

Per autenticarti a Cloud Storage, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.

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

Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Cloud Storage PHP.

Per eseguire l'autenticazione su Cloud Storage, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.

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

Per ulteriori informazioni, consulta la documentazione di riferimento dell'API Cloud Storage Python.

Per autenticarti a Cloud Storage, configura le credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per un ambiente di sviluppo locale.

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

Per ulteriori informazioni, consulta API Cloud Storage Ruby documentazione di riferimento.

Per eseguire l'autenticazione su Cloud Storage, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, consulta Configurare l'autenticazione per un ambiente di sviluppo locale.

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

API REST

API JSON

  1. Avere gcloud CLI installato e inizializzato, che consente generi un token di accesso per l'intestazione Authorization.

  2. Utilizza cURL per chiamare l'API JSON con una richiesta DELETE:

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

    Dove:

    • BUCKET_NAME è il nome del bucket contenente l'oggetto che vuoi eliminare. Ad esempio, my-bucket.
    • OBJECT_NAME è il nome codificato in URL dell'oggetto che vuoi eliminare. Ad esempio, pets/dog.png, Codificato come URL pets%2Fdog.png.

API XML

  1. Avere installato e inizializzato l'interfaccia a riga di comando gcloud, che consente di generare un token di accesso per l'intestazione Authorization.

  2. Utilizza cURL per chiamare l'API XML con un Richiesta DELETE Object:

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

    Dove:

    • BUCKET_NAME è il nome del bucket contenente l'oggetto che vuoi eliminare. Ad esempio, my-bucket.
    • OBJECT_NAME è il nome codificato nell'URL di l'oggetto che vuoi eliminare. Ad esempio, pets/dog.png, Codificato come URL pets%2Fdog.png.

Eliminare gli oggetti collettivamente

Se vuoi eliminare collettivamente almeno centomila oggetti, evita di utilizzaregcloud storage, in quanto il processo richiede molto tempo. Prendi invece in considerazione una delle seguenti opzioni:

  • La funzionalità Gestione del ciclo di vita degli oggetti può eliminare un numero qualsiasi di oggetti. Per eliminare in blocco gli oggetti nel bucket utilizzando questa funzionalità, imposta una regola di configurazione del ciclo di vita nel bucket in cui la condizione ha Age impostato su 0 giorni e l'azione è impostata su delete. Una volta impostata la regola, Cloud Storage esegue l'eliminazione collettiva in modo asincrono.

  • La console Google Cloud è anche un'opzione consigliata quando elimini fino a un massimo di e milioni di oggetti. Una volta avviata la richiesta di eliminazione, il processo avviene in background. Puoi controllare lo stato dell'eliminazione collettiva facendo clic sul pulsante Notifiche () nell'intestazione della console Google Cloud.

  • Quando utilizzi determinate librerie client o quando utilizzi direttamente l'API JSON, puoi raggruppare le richieste di eliminazione per ridurre il numero di connessioni HTTP da effettuare.

Passaggi successivi