OSS tidak mendukung pengubahan nama objek secara langsung. Untuk mengganti nama objek dalam bucket yang sama, salin objek sumber ke objek tujuan dengan memanggil operasi CopyObject, lalu hapus objek sumber dengan memanggil operasi DeleteObject.
Catatan penggunaan
Topik ini menggunakan titik akhir publik wilayah China (Hangzhou). Jika Anda mengakses OSS dari layanan Alibaba Cloud lain 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.
Kredensial akses pada topik ini diperoleh dari variabel lingkungan. Untuk informasi selengkapnya tentang cara mengonfigurasi kredensial akses, lihat Konfigurasikan 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 Konfigurasikan client (Go SDK V1).
Kode contoh
Kode berikut menunjukkan cara mengubah nama objek srcobject.txt menjadi destobject.txt di bucket examplebucket.
package main
import (
"fmt"
"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 Endpoint bucket. Misalnya, untuk bucket di wilayah China (Hangzhou), setel Endpoint ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, gunakan Endpoint yang sesuai.
// Setel yourRegion ke wilayah tempat bucket berada. Misalnya, untuk bucket di 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.
bucketName := "examplebucket"
bucket, err := client.Bucket(bucketName)
if err != nil {
log.Fatalf("Gagal mendapatkan bucket '%s': %v", bucketName, err)
}
// Path lengkap objek sumber. Path lengkap tidak boleh mengandung nama bucket.
srcObject := "srcobject.txt"
// Path lengkap objek tujuan. Path lengkap tidak boleh mengandung nama bucket.
destObject := "destobject.txt"
// Salin srcobject.txt ke destobject.txt dalam bucket yang sama.
_, err = bucket.CopyObject(srcObject, destObject)
if err != nil {
log.Fatalf("Gagal menyalin objek '%s' ke '%s': %v", srcObject, destObject, err)
}
// Hapus srcobject.txt.
err = bucket.DeleteObject(srcObject)
if err != nil {
log.Fatalf("Gagal menghapus objek sumber '%s': %v", srcObject, err)
}
fmt.Printf("%s telah diubah namanya menjadi %s\n", srcObject, destObject)
}
Referensi
Untuk informasi selengkapnya mengenai operasi API yang digunakan untuk mengubah nama objek, lihat CopyObject dan DeleteObject.