全部产品
Search
文档中心

Object Storage Service:Kelola Pengendalian Versi Menggunakan OSS SDK untuk Go 2.0

更新时间:Aug 07, 2025

Status versioning suatu bucket berlaku untuk semua objek dalam bucket tersebut. Dengan mengaktifkan versioning pada sebuah bucket, Anda dapat memulihkan versi sebelumnya dari objek yang secara tidak sengaja tertimpa atau terhapus.

Catatan

  • Contoh kode dalam topik ini menggunakan ID Wilayah cn-hangzhou dari Wilayah China (Hangzhou). Secara default, titik akhir publik digunakan untuk mengakses sumber daya dalam sebuah bucket. Jika Anda ingin mengakses sumber daya dalam bucket dengan menggunakan layanan Alibaba Cloud lainnya di wilayah yang sama dengan bucket tersebut, gunakan titik akhir internal. Untuk informasi lebih lanjut tentang wilayah dan titik akhir yang didukung oleh Object Storage Service (OSS), lihat Wilayah dan Titik Akhir OSS.

  • Dalam topik ini, kredensial akses diperoleh dari variabel lingkungan. Untuk informasi lebih lanjut tentang cara mengonfigurasi kredensial akses, lihat Konfigurasikan Kredensial Akses.

  • Izin oss:PutBucketVersioning diperlukan untuk mengonfigurasi pengendalian versi untuk sebuah bucket. Izin oss:GetBucketVersioning diperlukan untuk menanyakan status pengendalian versi sebuah bucket. Untuk informasi lebih lanjut, lihat Berikan Izin Kustom ke Pengguna RAM.

Metode

Konfigurasikan status versioning sebuah bucket

func (c *Client) PutBucketVersioning(ctx context.Context, request *PutBucketVersioningRequest, optFns ...func(*Options)) (*PutBucketVersioningResult, error)

Tanyakan status versioning sebuah bucket

func (c *Client) GetBucketVersioning(ctx context.Context, request *GetBucketVersioningRequest, optFns ...func(*Options)) (*GetBucketVersioningResult, error)

Parameter permintaan

Parameter

Tipe

Deskripsi

ctx

context.Context

Konteks permintaan, yang dapat digunakan untuk menentukan durasi total permintaan.

request

*PutBucketVersioningRequest

Parameter permintaan untuk mengonfigurasi versioning bucket.

Untuk informasi lebih lanjut, lihat PutBucketVersioningRequest.

*GetBucketVersioningRequest

Parameter permintaan untuk menanyakan status versioning sebuah bucket.

Untuk informasi lebih lanjut, lihat GetBucketVersioningRequest.

optFns

...func(*Options)

Opsional. Parameter tingkat operasi. Untuk informasi lebih lanjut, lihat Options.

Parameter respons

Parameter respons

Tipe

Deskripsi

result

*PutBucketVersioningResult

Respons terhadap operasi. Parameter ini tersedia ketika nilai err adalah nil. Untuk informasi lebih lanjut, lihat PutBucketVersioningResult.

*GetBucketVersioningResult

Respons terhadap operasi. Parameter ini tersedia ketika nilai err adalah nil. Untuk informasi lebih lanjut, lihat GetBucketVersioningResult.

err

error

Status permintaan. Jika permintaan gagal, nilai err tidak nil.

Contoh kode

Konfigurasikan status versioning sebuah bucket

Kode berikut menunjukkan cara mengaktifkan versioning untuk sebuah bucket.

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)

// Tentukan variabel global.
var (
	region     string // Wilayah tempat bucket berada.
	bucketName string // Nama bucket.
)

// Tentukan fungsi init yang digunakan untuk menginisialisasi parameter baris perintah.
func init() {
	flag.StringVar(&region, "region", "", "Wilayah tempat bucket berada.")
	flag.StringVar(&bucketName, "bucket", "", "Nama bucket.")
}

func main() {
	// Parsing parameter baris perintah.
	flag.Parse()

	// Periksa apakah nama bucket telah ditentukan.
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, nama bucket diperlukan")
	}

	// Periksa apakah wilayah telah ditentukan.
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, wilayah diperlukan")
	}

	// Muat konfigurasi default dan tentukan penyedia kredensial dan wilayah.
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	// Buat klien OSS.
	client := oss.NewClient(cfg)

	// Buat permintaan untuk mengonfigurasi status versioning bucket.
	putRequest := &oss.PutBucketVersioningRequest{
		Bucket: oss.Ptr(bucketName), // Nama bucket.
		VersioningConfiguration: &oss.VersioningConfiguration{
			Status: oss.VersionEnabled, // Aktifkan versioning untuk bucket.
		},
	}

	// Eksekusi permintaan.
	putResult, err := client.PutBucketVersioning(context.TODO(), putRequest)
	if err != nil {
		log.Fatalf("gagal menempatkan versioning bucket %v", err)
	}

	// Tampilkan hasilnya.
	log.Printf("hasil versioning bucket:%#v\n", putResult)
}

Tanyakan status versioning sebuah bucket

Kode berikut menunjukkan cara menanyakan status versioning sebuah bucket.

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)

// Tentukan variabel global.
var (
	region     string // Wilayah tempat bucket berada.
	bucketName string // Nama bucket.
)

// Tentukan fungsi init yang digunakan untuk menginisialisasi parameter baris perintah.
func init() {
	flag.StringVar(&region, "region", "", "Wilayah tempat bucket berada.")
	flag.StringVar(&bucketName, "bucket", "", "Nama bucket.")
}

func main() {
	// Parsing parameter baris perintah.
	flag.Parse()

	// Periksa apakah nama bucket telah ditentukan.
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, nama bucket diperlukan")
	}

	// Periksa apakah wilayah telah ditentukan.
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, wilayah diperlukan")
	}

	// Muat konfigurasi default dan tentukan penyedia kredensial dan wilayah.
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	// Buat klien OSS.
	client := oss.NewClient(cfg)

	// Buat permintaan untuk menanyakan status versioning bucket.
	getRequest := &oss.GetBucketVersioningRequest{
		Bucket: oss.Ptr(bucketName), // Nama bucket.
	}

	// Lakukan permintaan query.
	getResult, err := client.GetBucketVersioning(context.TODO(), getRequest)
	if err != nil {
		log.Fatalf("gagal mendapatkan versioning bucket %v", err)
	}

	// Tampilkan hasilnya.
	log.Printf("hasil versioning bucket:%#v\n", getResult)
}

Referensi

  • Untuk informasi lebih lanjut tentang operasi API yang dapat Anda panggil untuk mengonfigurasi status versioning sebuah bucket, lihat PutBucketVersioning.

  • Untuk informasi lebih lanjut tentang operasi API yang dapat Anda panggil untuk menanyakan status versioning sebuah bucket, lihat GetBucketVersioning.