All Products
Search
Document Center

Object Storage Service:Hapus file (Go SDK V1)

Last Updated:Nov 29, 2025

Topik ini menjelaskan cara menghapus satu objek, beberapa objek yang ditentukan, objek dengan awalan nama tertentu, atau direktori beserta seluruh objek di dalamnya.

Peringatan

Berhati-hatilah saat melakukan operasi penghapusan. Objek yang dihapus tidak dapat dipulihkan.

Catatan penggunaan

  • Pada topik ini, titik akhir publik wilayah China (Hangzhou) digunakan. Jika Anda ingin mengakses OSS dari layanan Alibaba Cloud lainnya yang berada di wilayah yang sama dengan OSS, gunakan titik akhir internal. Untuk informasi selengkapnya mengenai wilayah dan titik akhir OSS, lihat Wilayah dan titik akhir.

  • Pada topik ini, kredensial akses diperoleh dari variabel lingkungan. Untuk informasi selengkapnya tentang cara mengonfigurasi kredensial akses, lihat Konfigurasi kredensial akses.

  • Pada topik ini, instans OSSClient dibuat menggunakan titik akhir OSS. Jika Anda ingin membuat instans OSSClient menggunakan nama domain kustom atau Security Token Service (STS), lihat Konfigurasi client (Go SDK V1).

  • Untuk menghapus objek, Anda harus memiliki izin oss:DeleteObject. Untuk informasi selengkapnya, lihat Lampirkan kebijakan kustom ke RAM user.

Hapus satu file

Kode berikut menunjukkan cara menghapus objek exampleobject.txt dari bucket examplebucket.

package main

import (
	"log"

	"github.com/aliyun/aliyun-oss-go-sdk/oss"
)

func main() {
	// Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel.
	provider, err := oss.NewEnvironmentVariableCredentialsProvider()
	if err != nil {
		log.Fatalf("Gagal membuat penyedia kredensial: %v", err)
	}

	// Buat instans OSSClient.
	// Setel yourEndpoint ke titik akhir bucket Anda. Misalnya, untuk wilayah China (Hangzhou), setel titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, gunakan titik akhir yang sesuai.
	// Setel yourRegion ke wilayah tempat bucket Anda berada. Misalnya, untuk wilayah China (Hangzhou), setel wilayah ke cn-hangzhou. Untuk wilayah lain, gunakan wilayah yang sesuai.
	clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
	clientOptions = append(clientOptions, oss.Region("yourRegion"))
	// Setel versi signature.
	clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4))
	client, err := oss.New("yourEndpoint", "", "", clientOptions...)
	if err != nil {
		log.Fatalf("Gagal membuat client OSS: %v", err)
	}

	// Tentukan nama bucket, misalnya examplebucket.
	bucketName := "examplebucket"
	// Setel objectName ke path lengkap file yang akan dihapus, termasuk ekstensi file tetapi tidak termasuk nama bucket. Misalnya, exampledir/exampleobject.txt.
	// Untuk menghapus folder, setel objectName ke nama folder tersebut. Jika foldernya tidak kosong, Anda harus menghapus semua objek di dalam folder tersebut terlebih dahulu sebelum bisa menghapus folder itu sendiri.
	objectName := "exampledir/exampleobject.txt"

	// Dapatkan instans bucket.
	bucket, err := client.Bucket(bucketName)
	if err != nil {
		log.Fatalf("Gagal mendapatkan bucket '%s': %v", bucketName, err)
	}

	// Hapus satu file.
	err = bucket.DeleteObject(objectName)
	if err != nil {
		log.Fatalf("Gagal menghapus objek '%s': %v", objectName, err)
	}

	log.Printf("Berhasil menghapus objek: %s\n", objectName)
}

Hapus beberapa file

Anda dapat menghapus hingga 1.000 file dalam satu operasi. Anda dapat menghapus file dengan salah satu cara berikut:

  • Hapus beberapa file yang ditentukan berdasarkan nama.

  • Hapus semua file yang memiliki awalan tertentu.

  • Hapus folder tertentu beserta seluruh file yang dikandungnya.

OSS juga mendukung penghapusan file otomatis menggunakan aturan siklus hidup. Untuk informasi selengkapnya, lihat Aturan siklus hidup berdasarkan waktu modifikasi terakhir.

Hapus beberapa file berdasarkan nama

Kode berikut menunjukkan cara menghapus beberapa file yang ditentukan berdasarkan nama.

package main

import (
	"log"

	"github.com/aliyun/aliyun-oss-go-sdk/oss"
)

func main() {
	// Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel.
	provider, err := oss.NewEnvironmentVariableCredentialsProvider()
	if err != nil {
		log.Fatalf("Gagal membuat penyedia kredensial: %v", err)
	}

	// Buat instans OSSClient.
	// Setel yourEndpoint ke titik akhir bucket Anda. Misalnya, untuk wilayah China (Hangzhou), setel titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, gunakan titik akhir yang sesuai.
	// Setel yourRegion ke wilayah tempat bucket Anda berada. Misalnya, untuk wilayah China (Hangzhou), setel wilayah ke cn-hangzhou. Untuk wilayah lain, gunakan wilayah yang sesuai.
	clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
	clientOptions = append(clientOptions, oss.Region("yourRegion"))
	// Setel versi signature.
	clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4))
	client, err := oss.New("yourEndpoint", "", "", clientOptions...)
	if err != nil {
		log.Fatalf("Gagal membuat client OSS: %v", err)
	}

	// Tentukan nama bucket, misalnya examplebucket.
	bucketName := "examplebucket"

	// Dapatkan instans bucket.
	bucket, err := client.Bucket(bucketName)
	if err != nil {
		log.Fatalf("Gagal mendapatkan bucket '%s': %v", bucketName, err)
	}

	// Hapus beberapa file dan kembalikan hasilnya.
	objectsToDelete := []string{"my-object-1", "my-object-2"}
	delRes, err := bucket.DeleteObjects(objectsToDelete)
	if err != nil {
		log.Fatalf("Gagal menghapus objek: %v", err)
	}
	log.Printf("Objek yang Dihapus: %v\n", delRes.DeletedObjects)

	// Hapus beberapa file tanpa mengembalikan hasilnya.
	objectsToDeleteQuiet := []string{"my-object-3", "my-object-4"}
	_, err = bucket.DeleteObjects(objectsToDeleteQuiet, oss.DeleteObjectsQuiet(true))
	if err != nil {
		log.Fatalf("Gagal menghapus objek (quiet): %v", err)
	}
	log.Println("Objek dihapus secara diam-diam")
}

Hapus beberapa file berdasarkan awalan atau dalam folder

Kode berikut menunjukkan cara menghapus beberapa file yang memiliki awalan tertentu atau menghapus folder tertentu beserta seluruh file yang dikandungnya.

Peringatan

Jika nilai parameter prefix pada kode contoh berikut adalah string kosong atau NULL, semua objek dalam bucket akan dihapus. Berhati-hatilah saat menggunakan parameter ini.

package main

import (
	"log"

	"github.com/aliyun/aliyun-oss-go-sdk/oss"
)

func main() {
	// Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel.
	provider, err := oss.NewEnvironmentVariableCredentialsProvider()
	if err != nil {
		log.Fatalf("Gagal membuat penyedia kredensial: %v", err)
	}

	// Buat instans OSSClient.
	// Setel yourEndpoint ke titik akhir bucket Anda. Misalnya, untuk wilayah China (Hangzhou), setel titik akhir ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, gunakan titik akhir yang sesuai.
	// Setel yourRegion ke wilayah tempat bucket Anda berada. Misalnya, untuk wilayah China (Hangzhou), setel wilayah ke cn-hangzhou. Untuk wilayah lain, gunakan wilayah yang sesuai.
	clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
	clientOptions = append(clientOptions, oss.Region("yourRegion"))
	// Setel versi signature.
	clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4))
	client, err := oss.New("yourEndpoint", "", "", clientOptions...)
	if err != nil {
		log.Fatalf("Gagal membuat client OSS: %v", err)
	}

	// Tentukan nama bucket, misalnya examplebucket.
	bucket, err := client.Bucket("examplebucket")
	if err != nil {
		log.Fatalf("Gagal mendapatkan bucket: %v", err)
	}

	// Daftar dan hapus semua file yang memiliki awalan yang ditentukan.
	marker := oss.Marker("")
	// Untuk menghapus semua file dengan awalan "src", setel prefix ke "src". Ini akan menghapus semua file non-folder dengan awalan "src", folder "src", serta semua file di dalamnya.
	prefix := oss.Prefix("src")
	// Untuk hanya menghapus folder "src" dan semua file di dalamnya, setel prefix ke "src/".
	// prefix := oss.Prefix("src/")
	var totalDeleted int

	for {
		lor, err := bucket.ListObjects(marker, prefix)
		if err != nil {
			log.Fatalf("Gagal menampilkan daftar objek: %v", err)
		}

		objects := make([]string, len(lor.Objects))
		for i, object := range lor.Objects {
			objects[i] = object.Key
		}

		// Hapus objek-objek tersebut.
		delRes, err := bucket.DeleteObjects(objects, oss.DeleteObjectsQuiet(true))
		if err != nil {
			log.Fatalf("Gagal menghapus objek: %v", err)
		}

		if len(delRes.DeletedObjects) > 0 {
			log.Fatalf("Beberapa objek gagal dihapus: %v", delRes.DeletedObjects)
		}

		totalDeleted += len(objects)

		// Perbarui marker.
		marker = oss.Marker(lor.NextMarker)
		if !lor.IsTruncated {
			break
		}
	}

	log.Printf("Berhasil, jumlah total objek yang dihapus: %d\n", totalDeleted)
}

Referensi

  • Untuk kode contoh lengkap mengenai penghapusan file, lihat contoh di GitHub.

  • Untuk informasi selengkapnya mengenai operasi API untuk menghapus satu file, lihat DeleteObject.

  • Untuk informasi selengkapnya mengenai operasi API untuk menghapus beberapa file, lihat DeleteObjects.