Menghapus objek

Halaman ini menunjukkan cara menghapus objek dari bucket Anda di Cloud Storage.

Sebelum memulai

Jika ingin mendapatkan izin yang diperlukan untuk menghapus objek, minta administrator untuk memberi Anda peran IAM Storage Object User (roles/storage.objectUser) untuk bucket yang berisi objek yang ingin dihapus.

Jika Anda berencana menggunakan Konsol Google Cloud untuk menyelesaikan tugas di halaman ini, minta administrator Anda untuk memberi Anda peran Storage Admin (roles/storage.admin), bukan Storage Object User (roles/storage.objectUser), atau peran dasar Viewer (roles/viewer) selain peran Storage Object User (roles/storage.objectUser).

Peran ini berisi izin berikut, yang diperlukan untuk menghapus objek:

  • storage.objects.delete

  • storage.objects.list

    • Izin ini hanya diperlukan saat menggunakan Konsol Google Cloud, atau saat menggunakan tanda --recursive atau karakter pengganti di Google Cloud CLI.
  • storage.buckets.list

    • Izin ini hanya diperlukan saat menggunakan Konsol Google Cloud untuk menjalankan petunjuk di halaman ini.

Anda juga bisa mendapatkan izin ini dengan peran standar atau peran khusus lainnya.

Untuk informasi tentang cara memberikan peran untuk bucket, lihat Menggunakan IAM dengan bucket.

Menghapus objek

Selesaikan langkah-langkah berikut untuk menghapus objek dari salah satu bucket Cloud Storage Anda:

Konsol

  1. Di Konsol Google Cloud, buka halaman Bucket Cloud Storage.

    Buka Buckets

  2. Dalam daftar bucket, klik nama bucket yang berisi objek yang ingin dihapus.

    Halaman Detail bucket akan terbuka, dan tab Objek akan dipilih.

  3. Buka objek, yang mungkin berada dalam folder.

  4. Klik kotak centang untuk setiap objek yang ingin dihapus.

    Anda juga dapat mengklik kotak centang untuk folder, yang akan menghapus semua objek yang ada dalam folder tersebut.

  5. Klik tombol Hapus.

  6. Klik Hapus di dialog yang muncul.

Jika menghapus banyak objek sekaligus, Anda dapat melacak progres penghapusan dengan mengklik ikon Notifications di Konsol Google Cloud. Konsol Google Cloud dapat menghapus hingga beberapa juta objek secara massal dan melakukannya di latar belakang.

Untuk mempelajari cara mendapatkan informasi error mendetail tentang operasi Cloud Storage yang gagal di Konsol Google Cloud, lihat Pemecahan masalah.

Command line

Gunakan perintah Google Cloud CLI gcloud storage rm:

gcloud storage rm gs://BUCKET_NAME/OBJECT_NAME

Dengan keterangan:

  • BUCKET_NAME adalah nama bucket yang berisi objek yang ingin Anda hapus. Contoh, my-bucket.
  • OBJECT_NAME adalah nama objek yang ingin Anda hapus. Contoh, pets/dog.png.

Jika berhasil, responsnya akan terlihat mirip dengan contoh berikut:

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

Library klien

C++

Untuk mengetahui informasi selengkapnya, lihatDokumentasi referensi Cloud Storage C++ API.

Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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#

Untuk mengetahui informasi selengkapnya, lihatDokumentasi referensi Cloud Storage C# API.

Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.


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

Untuk mengetahui informasi selengkapnya, lihatDokumentasi referensi Cloud Storage Go API.

Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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

Untuk mengetahui informasi selengkapnya, lihatDokumentasi referensi Cloud Storage Java API.

Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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

Untuk mengetahui informasi selengkapnya, lihatDokumentasi referensi Cloud Storage Node.js API.

Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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

Untuk mengetahui informasi selengkapnya, lihatDokumentasi referensi Cloud Storage PHP API.

Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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

Untuk mengetahui informasi selengkapnya, lihatDokumentasi referensi Cloud Storage Python API.

Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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

Untuk mengetahui informasi selengkapnya, lihatDokumentasi referensi Cloud Storage Ruby API.

Untuk melakukan autentikasi ke Cloud Storage, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, baca Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

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 API

JSON API

  1. Telah menginstal dan melakukan inisialisasigcloud CLI, agar dapat membuat token akses untuk header Authorization.

    Atau, Anda dapat membuat token akses menggunakan OAuth 2.0 Playground dan menyertakannya di header Authorization.

  2. Gunakan cURL untuk memanggil JSON API dengan permintaan DELETE:

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

    Dengan keterangan:

    • BUCKET_NAME adalah nama bucket yang berisi objek yang ingin Anda hapus. Misalnya, my-bucket.
    • OBJECT_NAME adalah nama yang dienkode ke URL untuk objek yang ingin Anda hapus. Contohnya, pets/dog.png, yang berenkode URL menjadi pets%2Fdog.png.

XML API

  1. Telah menginstal dan melakukan inisialisasigcloud CLI, agar dapat membuat token akses untuk header Authorization.

    Atau, Anda dapat membuat token akses menggunakan OAuth 2.0 Playground dan menyertakannya di header Authorization.

  2. Gunakan cURL untuk memanggil XML API dengan permintaan DELETE Object:

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

    Dengan keterangan:

    • BUCKET_NAME adalah nama bucket yang berisi objek yang ingin Anda hapus. Misalnya, my-bucket.
    • OBJECT_NAME adalah nama yang dienkode ke URL untuk objek yang ingin Anda hapus. Contohnya, pets/dog.png, yang berenkode URL menjadi pets%2Fdog.png.

Menghapus objek secara massal

Jika Anda ingin menghapus seratus ribu objek atau lebih secara massal, hindari penggunaan gcloud storage, karena prosesnya memerlukan waktu lama. Sebagai gantinya, pertimbangkan salah satu opsi berikut:

  • Fitur Object Lifecycle Management dapat menghapus objek dalam jumlah berapa pun. Untuk menghapus massal objek di bucket Anda menggunakan fitur ini, tetapkan aturan konfigurasi siklus proses di bucket Anda dengan kondisi Age ditetapkan ke 0 hari dan tindakannya ditetapkan ke delete. Setelah Anda menetapkan aturan, Cloud Storage melakukan penghapusan massal secara asinkron.

  • Konsol Google Cloud juga merupakan opsi yang direkomendasikan saat menghapus hingga satu juta objek. Setelah Anda memulai permintaan penghapusan tersebut, proses akan terjadi di latar belakang. Anda dapat memeriksa status penghapusan massal dengan mengklik tombol Notifications () di header Google Cloud Console.

  • Saat menggunakan library klien tertentu atau saat menggunakan JSON API secara langsung, Anda dapat menumpuk permintaan penghapusan untuk mengurangi jumlah koneksi HTTP yang perlu Anda buat.

Langkah selanjutnya