全部产品
Search
文档中心

Object Storage Service:Memulihkan objek (Go SDK V2)

更新时间:Nov 09, 2025

Sebelum membaca objek Arsip, Arsip Dingin, atau Arsip Dingin Dalam, Anda harus memulihkannya terlebih dahulu. Saat objek dipulihkan, salinan sementara akan dibuat. Salinan ini ada bersamaan dengan objek aslinya dan secara otomatis dihapus setelah periode pemulihan berakhir. Topik ini menjelaskan cara menggunakan OSS Go SDK untuk memulihkan objek tersebut.

Catatan

  • Hanya objek Arsip, Arsip Dingin, dan Arsip Dingin Dalam yang mendukung metode RestoreObject.

  • Kode contoh dalam topik ini menggunakan ID Wilayah China (Hangzhou) cn-hangzhou sebagai contoh. Secara default, titik akhir publik digunakan. Jika Anda ingin mengakses OSS dari layanan Alibaba Cloud lainnya di wilayah yang sama, gunakan titik akhir internal. Untuk informasi lebih lanjut tentang wilayah dan titik akhir yang didukung oleh OSS, lihat Wilayah dan titik akhir OSS.

  • Topik ini memberikan contoh cara membaca kredensial akses dari variabel lingkungan. Untuk informasi lebih lanjut tentang cara mengonfigurasi kredensial akses, lihat Konfigurasikan kredensial akses.

  • Untuk memulihkan objek, Anda harus memiliki izin oss:RestoreObject. Untuk informasi lebih lanjut, lihat Berikan kebijakan akses kustom kepada Pengguna RAM.

Definisi metode

func (c *Client) RestoreObject(ctx context.Context, request *RestoreObjectRequest, optFns ...func(*Options)) (*RestoreObjectResult, error)

Parameter permintaan

Parameter

Tipe

Deskripsi

ctx

context.Context

Konteks permintaan, yang dapat digunakan untuk menetapkan batas waktu total untuk permintaan.

request

*RestoreObjectRequest

Parameter permintaan untuk operasi. Untuk informasi lebih lanjut, lihat RestoreObjectRequest.

optFns

...func(*Options)

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

Tabel berikut menjelaskan parameter umum dari RestoreObjectRequest.

Parameter

Tipe

Deskripsi

bucket

*string

Nama bucket.

key

*string

Nama objek.

versionId

*string

Nomor versi objek yang akan dipulihkan. Jika Anda tidak menetapkan parameter ini, versi terbaru dari objek ditentukan secara default.

restoreRequest

*RestoreRequest

Parameter permintaan pemulihan.

Tabel berikut menjelaskan parameter dari RestoreRequest.

Parameter

Tipe

Deskripsi

days

int32

Durasi keadaan dipulihkan. Untuk informasi lebih lanjut, lihat Memulihkan objek.

tier

*string

Waktu yang diperlukan untuk memulihkan objek. Untuk informasi lebih lanjut, lihat Memulihkan objek.

Nilai kembali

Nilai kembali

Tipe

Deskripsi

result

*RestoreObjectResult

Nilai kembali dari operasi. Ini valid ketika `err` adalah nil. Untuk informasi lebih lanjut, lihat RestoreObjectResult.

err

error

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

Kode contoh

Gunakan kode berikut untuk memulihkan objek Arsip, Arsip Dingin, atau Arsip Dingin Dalam:

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"
)

// Definisikan variabel global.
var (
	region     string // Wilayah penyimpanan.
	bucketName string // Nama bucket.
	objectName string // Nama objek.
)

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

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")
	}

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

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

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

	// Buat permintaan untuk memulihkan objek.
	request := &oss.RestoreObjectRequest{
		Bucket: oss.Ptr(bucketName), // Nama bucket.
		Key:    oss.Ptr(objectName), // Nama objek.
		RestoreRequest: &oss.RestoreRequest{
			Days: 3, // Tetapkan durasi keadaan dipulihkan menjadi 3 hari.
		},
	}

	// Kirim permintaan untuk memulihkan objek.
	result, err := client.RestoreObject(context.TODO(), request)
	if err != nil {
		log.Fatalf("gagal memulihkan objek %v", err)
	}

	// Cetak hasil operasi pemulihan.
	log.Printf("hasil pemulihan objek:%#v\n", result)
}

Skenario

Gunakan metode CleanRestoredObject untuk menghapus replika objek

Saat objek Arsip Dingin atau Arsip Dingin Dalam dipulihkan, replika dibuat untuk akses. Anda akan dikenakan biaya untuk penyimpanan sementara replika ini hingga keadaan dipulihkan berakhir. Jika Anda ingin mengakhiri keadaan dipulihkan lebih awal dan berhenti menanggung biaya penyimpanan untuk replika, Anda dapat memanggil operasi CleanRestoredObject. Setelah operasi selesai, objek kembali ke status beku dan tidak dapat dibaca langsung.

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"
)

// Definisikan variabel global untuk menyimpan parameter baris perintah.
var (
	region     string // Wilayah tempat bucket OSS berada.
	bucketName string // Nama bucket.
	objectName string // Nama objek.
)

// Fungsi init menginisialisasi parser flag baris perintah dan menetapkan nilai default serta pesan bantuan untuk setiap parameter.
func init() {
	flag.StringVar(&region, "region", "", "Wilayah tempat bucket berada. Diperlukan.")
	flag.StringVar(&bucketName, "bucket", "", "Nama bucket. Diperlukan.")
	flag.StringVar(&objectName, "object", "", "Nama objek. Diperlukan.")
}

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

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

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

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

	// Muat konfigurasi default dan atur penyedia kredensial (baca dari variabel lingkungan) dan wilayah yang ditentukan.
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

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

	// Buat permintaan untuk menghapus replika objek yang telah dipulihkan.
	request := &oss.CleanRestoredObjectRequest{
		Bucket: oss.Ptr(bucketName), // Tetapkan nama bucket.
		Key:    oss.Ptr(objectName), // Tetapkan nama objek.
	}

	// Kirim permintaan untuk menghapus replika objek yang telah dipulihkan.
	result, err := client.CleanRestoredObject(context.TODO(), request)
	if err != nil {
		log.Fatalf("gagal membersihkan objek yang telah dipulihkan %v", err)
	}

	// Cetak hasilnya.
	log.Printf("hasil pembersihan objek yang telah dipulihkan:%#v\n", result)
}

Referensi (Go SDK V2)

  • Untuk kode contoh lengkap untuk memulihkan objek, lihat Contoh GitHub.

  • Untuk informasi lebih lanjut tentang operasi API untuk memulihkan objek, lihat RestoreObject.

  • Untuk informasi lebih lanjut, lihat Memulihkan objek.