全部产品
Search
文档中心

Object Storage Service:Kebijakan Retensi (Go SDK V2)

更新时间:Nov 09, 2025

Anda dapat mengonfigurasi kebijakan retensi berbasis waktu untuk sebuah bucket. Periode retensi dapat berkisar dari satu hari hingga 70 tahun. Topik ini menjelaskan cara membuat, menanyakan, dan mengunci kebijakan retensi.

Catatan penggunaan

  • Kode contoh dalam topik ini menggunakan ID Wilayah cn-hangzhou untuk Wilayah Hangzhou, Tiongkok. Secara default, titik akhir publik digunakan untuk mengakses sumber daya di bucket. Jika Anda ingin menggunakan layanan Alibaba Cloud lainnya untuk mengakses sumber daya di bucket dari wilayah yang sama, 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.

Kode contoh

Buat kebijakan penyimpanan

Penting

Sebuah bucket tidak dapat memiliki pengendalian versi dan kebijakan retensi yang dikonfigurasi secara bersamaan. Oleh karena itu, sebelum membuat kebijakan retensi untuk sebuah bucket, pastikan bahwa pengendalian versi tidak diaktifkan untuk bucket tersebut.

Kode berikut memberikan contoh cara membuat kebijakan retensi:

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.
	bucketName string // Nama bucket.
)

// Fungsi init 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 kosong.
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, nama bucket diperlukan")
	}

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

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

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

	// Buat permintaan untuk menginisialisasi kebijakan retensi untuk bucket.
	request := &oss.InitiateBucketWormRequest{
		Bucket: oss.Ptr(bucketName), // Tentukan nama bucket yang ingin Anda konfigurasi kebijakan retensinya.
		InitiateWormConfiguration: &oss.InitiateWormConfiguration{
			RetentionPeriodInDays: oss.Ptr(int32(30)), // Tentukan bahwa periode retensi objek adalah 30 hari.
		},
	}

	// Inisialisasi kebijakan retensi untuk bucket dan proses hasilnya.
	result, err := client.InitiateBucketWorm(context.TODO(), request)
	if err != nil {
		log.Fatalf("gagal memulai worm bucket %v", err)
	}

	// Cetak hasil inisialisasi kebijakan retensi untuk bucket.
	log.Printf("hasil inisiasi worm bucket:%#v\n", result)
}

Batalkan kebijakan retensi yang tidak terkunci

Kode berikut memberikan contoh cara membatalkan kebijakan retensi yang tidak terkunci:

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.
	bucketName string // Nama bucket.
)

// Inisialisasi 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 kosong.
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, nama bucket diperlukan")
	}

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

	// Konfigurasikan klien OSS.
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

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

	// Buat permintaan untuk membatalkan kebijakan retensi.
	request := &oss.AbortBucketWormRequest{
		Bucket: oss.Ptr(bucketName),
	}

	// Batalkan kebijakan retensi dan proses hasilnya.
	result, err := client.AbortBucketWorm(context.TODO(), request)
	if err != nil {
		log.Fatalf("gagal membatalkan worm bucket %v", err)
	}

	log.Printf("hasil pembatalan worm bucket:%#v\n", result)
}

Kunci kebijakan penyimpanan

Kode berikut memberikan contoh cara mengunci kebijakan retensi:

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
	bucketName string
)

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

func main() {
	var (
		wormId = "worm id" // wormId menentukan ID tugas WORM.
	)
	// Parsing parameter baris perintah.
	flag.Parse()

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

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

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

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

	// Buat permintaan untuk menyelesaikan kebijakan retensi.
	request := &oss.CompleteBucketWormRequest{
		Bucket: oss.Ptr(bucketName),
		WormId: oss.Ptr(wormId),
	}
	// Panggil metode CompleteBucketWorm dari klien untuk menyelesaikan kebijakan retensi.
	result, err := client.CompleteBucketWorm(context.TODO(), request)
	if err != nil {
		log.Fatalf("gagal menyelesaikan worm bucket %v", err)
	}

	log.Printf("hasil penyelesaian worm bucket:%#v\n", result)
}

Periksa kebijakan penyimpanan

Kode berikut memberikan contoh cara menanyakan kebijakan retensi:

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.
	bucketName string // Nama bucket.
)

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

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

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

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

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

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

	// Buat permintaan untuk menanyakan kebijakan retensi yang dikonfigurasi untuk bucket.
	request := &oss.GetBucketWormRequest{
		Bucket: oss.Ptr(bucketName), // Nama bucket.
	}

	// Tanyakan kebijakan retensi yang dikonfigurasi untuk bucket dan proses hasilnya.
	result, err := client.GetBucketWorm(context.TODO(), request)
	if err != nil {
		log.Fatalf("gagal mendapatkan worm bucket %v", err)
	}

	// Cetak hasil penanyakan kebijakan retensi yang dikonfigurasi untuk bucket.
	log.Printf("hasil mendapatkan worm bucket:%#v\n", result)
}

Perpanjang periode retensi objek

Kode berikut memberikan contoh cara memperpanjang periode retensi objek dalam kebijakan retensi yang terkunci:

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.
	bucketName string // Nama bucket.
)

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

func main() {
	var (
		wormId = "worm id" // wormId menentukan ID tugas WORM.
	)
	// Parsing parameter baris perintah.
	flag.Parse()

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

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

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

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

	// Buat permintaan untuk memperpanjang periode retensi yang ditentukan dalam kebijakan retensi.
	request := &oss.ExtendBucketWormRequest{
		Bucket: oss.Ptr(bucketName),
		WormId: oss.Ptr(wormId),
		ExtendWormConfiguration: &oss.ExtendWormConfiguration{
			RetentionPeriodInDays: oss.Ptr(int32(30)), // Perpanjang periode retensi objek dalam kebijakan retensi yang terkunci menjadi 30 hari.
		},
	}

	// Perpanjang periode retensi yang ditentukan dalam kebijakan retensi dan proses hasilnya.
	result, err := client.ExtendBucketWorm(context.TODO(), request)
	if err != nil {
		log.Fatalf("gagal memperpanjang worm bucket %v", err)
	}

	// Cetak hasil perpanjangan periode retensi yang ditentukan dalam kebijakan retensi.
	log.Printf("hasil perpanjangan worm bucket:%#v\n", result)
}

Referensi

  • Untuk informasi lebih lanjut tentang cara membuat kebijakan penyimpanan, lihat InitiateBucketWorm.

  • Untuk informasi lebih lanjut tentang cara membatalkan kebijakan retensi yang tidak terkunci, lihat AbortBucketWorm.

  • Untuk informasi lebih lanjut tentang cara mengunci kebijakan penyimpanan, lihat CompleteBucketWorm.

  • Untuk informasi lebih lanjut tentang cara memeriksa kebijakan penyimpanan, lihat GetBucketWorm.

  • Untuk informasi lebih lanjut tentang cara memperpanjang periode retensi objek, lihat ExtendBucketWorm.