Pengendalian versi berlaku untuk semua objek dalam sebuah bucket. Dengan Pengendalian versi diaktifkan, Anda dapat memulihkan objek apa pun ke versi sebelumnya jika tidak sengaja ditimpa atau dihapus.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
Bucket OSS
Izin
oss:PutBucketVersioninguntuk mengatur status pengendalian versiIzin
oss:GetBucketVersioninguntuk mengambil status pengendalian versi
Untuk informasi lebih lanjut tentang pemberian izin, lihat Berikan izin kustom kepada RAM user.
Catatan penggunaan
Contoh dalam topik ini menggunakan titik akhir publik untuk wilayah China (Hangzhou). Untuk mengakses OSS dari layanan Alibaba Cloud lainnya di wilayah yang sama, gunakan titik akhir internal yang sesuai. Untuk daftar lengkap wilayah dan titik akhir, lihat Wilayah dan titik akhir OSS.
Kredensial akses dalam contoh dibaca dari variabel lingkungan. Untuk petunjuk penyiapan, lihat Konfigurasi kredensial akses.
Contoh membuat instans OSSClient menggunakan titik akhir OSS. Untuk membuat instans dengan nama domain kustom atau Security Token Service (STS), lihat Contoh konfigurasi untuk skenario umum.
Mengatur status pengendalian versi bucket
Contoh berikut mengatur status pengendalian versi bucket menjadi Enabled. Untuk menangguhkan pengendalian versi, ganti BucketVersioningConfiguration.ENABLED dengan BucketVersioningConfiguration.SUSPENDED.
Sebelum mengubah status pengendalian versi, pastikan tidak ada tugas replikasi data yang sedang berjalan dan tidak ada kebijakan retensi yang dikonfigurasi untuk bucket tersebut.
import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.*;
public class Demo {
public static void main(String[] args) throws Exception {
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
EnvironmentVariableCredentialsProvider credentialsProvider =
CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
String bucketName = "examplebucket";
String region = "cn-hangzhou";
ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
OSS ossClient = OSSClientBuilder.create()
.endpoint(endpoint)
.credentialsProvider(credentialsProvider)
.clientConfiguration(clientBuilderConfiguration)
.region(region)
.build();
try {
BucketVersioningConfiguration configuration = new BucketVersioningConfiguration();
configuration.setStatus(BucketVersioningConfiguration.ENABLED);
SetBucketVersioningRequest request = new SetBucketVersioningRequest(bucketName, configuration);
ossClient.setBucketVersioning(request);
} catch (OSSException oe) {
System.out.println("Kesalahan OSS — permintaan mencapai OSS tetapi ditolak.");
System.out.println("Pesan kesalahan: " + oe.getErrorMessage());
System.out.println("Kode kesalahan: " + oe.getErrorCode());
System.out.println("ID Permintaan: " + oe.getRequestId());
System.out.println("Host ID: " + oe.getHostId());
} catch (ClientException ce) {
System.out.println("Kesalahan client — tidak dapat berkomunikasi dengan OSS (misalnya, masalah jaringan).");
System.out.println("Pesan kesalahan: " + ce.getMessage());
} finally {
if (ossClient != null) {
ossClient.shutdown();
}
}
}
}Mendapatkan informasi tentang status pengendalian versi bucket
Contoh berikut mengambil status pengendalian versi bucket.
import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.*;
public class Demo {
public static void main(String[] args) throws Exception {
String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
EnvironmentVariableCredentialsProvider credentialsProvider =
CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
String bucketName = "examplebucket";
String region = "cn-hangzhou";
ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
OSS ossClient = OSSClientBuilder.create()
.endpoint(endpoint)
.credentialsProvider(credentialsProvider)
.clientConfiguration(clientBuilderConfiguration)
.region(region)
.build();
try {
BucketVersioningConfiguration versionConfiguration = ossClient.getBucketVersioning(bucketName);
System.out.println("Status pengendalian versi bucket: " + versionConfiguration.getStatus());
} catch (OSSException oe) {
System.out.println("Kesalahan OSS — permintaan mencapai OSS tetapi ditolak.");
System.out.println("Pesan kesalahan: " + oe.getErrorMessage());
System.out.println("Kode kesalahan: " + oe.getErrorCode());
System.out.println("ID Permintaan: " + oe.getRequestId());
System.out.println("Host ID: " + oe.getHostId());
} catch (ClientException ce) {
System.out.println("Kesalahan client — tidak dapat berkomunikasi dengan OSS (misalnya, masalah jaringan).");
System.out.println("Pesan kesalahan: " + ce.getMessage());
} finally {
if (ossClient != null) {
ossClient.shutdown();
}
}
}
}