All Products
Search
Document Center

Object Storage Service:Mengelola Pengendalian versi (Java SDK V1)

Last Updated:Mar 21, 2026

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:PutBucketVersioning untuk mengatur status pengendalian versi

  • Izin oss:GetBucketVersioning untuk 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.

Penting

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();
            }
        }
    }
}

Langkah selanjutnya