全部产品
Search
文档中心

Object Storage Service:Mengelola versioning (C# SDK V1)

更新时间:Nov 29, 2025

Pengendalian versi berlaku untuk semua objek dalam sebuah bucket. Dengan fitur ini, Anda dapat memulihkan objek ke salah satu versi sebelumnya di dalam bucket jika objek tersebut tidak sengaja ditimpa atau dihapus.

Sebuah bucket memiliki tiga status pengendalian versi: unversioned (default), versioning enabled, dan versioning suspended. Untuk informasi selengkapnya tentang status pengendalian versi, lihat Versioning.

Catatan penggunaan

  • Topik ini menggunakan titik akhir publik wilayah China (Hangzhou). Jika Anda mengakses OSS dari layanan Alibaba Cloud lain yang berada di wilayah yang sama dengan OSS, gunakan titik akhir internal. Untuk informasi selengkapnya tentang wilayah dan titik akhir OSS, lihat Regions and endpoints.

  • Pada topik ini, instans OSSClient dibuat menggunakan titik akhir OSS. Jika Anda ingin membuat instans OSSClient menggunakan nama domain kustom atau Security Token Service (STS), lihat Initialization.

  • Untuk mengatur status pengendalian versi sebuah bucket, Anda harus memiliki izin oss:PutBucketVersioning. Untuk mengambil status pengendalian versi sebuah bucket, Anda harus memiliki izin oss:GetBucketVersioning. Untuk informasi selengkapnya, lihat Grant custom permissions to a RAM user.

Mengatur status pengendalian versi bucket

Kode contoh berikut menunjukkan cara mengaktifkan atau menangguhkan pengendalian versi untuk sebuah bucket:

using Aliyun.OSS;
using Aliyun.OSS.Common;

// Ganti yourEndpoint dengan titik akhir wilayah tempat bucket berada. Misalnya, untuk wilayah China (Hangzhou), atur titik akhir menjadi https://oss-cn-hangzhou.aliyuncs.com.
var endpoint = "yourEndpoint";
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel.
var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
// Masukkan nama bucket. Misalnya, examplebucket.
var bucketName = "examplebucket";
// Masukkan wilayah tempat bucket berada. Misalnya, untuk wilayah China (Hangzhou), masukkan cn-hangzhou.
const string region = "cn-hangzhou";

// Buat instans ClientConfiguration dan ubah parameter default sesuai kebutuhan.
var conf = new ClientConfiguration();

// Atur Signature Version 4.
conf.SignatureVersion = SignatureVersion.V4;

// Buat instans OssClient.
var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);
client.SetRegion(region);
try
{
    // Atur status pengendalian versi bucket menjadi Enabled.
    client.SetBucketVersioning(new SetBucketVersioningRequest(bucketName, VersioningStatus.Enabled));
    Console.WriteLine("Create bucket Version succeeded");
}
catch (Exception ex)
{
    Console.WriteLine("Create bucket Version failed. {0}", ex.Message);
}

Mendapatkan status pengendalian versi bucket

Kode contoh berikut menunjukkan cara menanyakan status pengendalian versi sebuah bucket:

using Aliyun.OSS;
using Aliyun.OSS.Common;
// Ganti yourEndpoint dengan titik akhir wilayah tempat bucket berada. Misalnya, untuk wilayah China (Hangzhou), atur titik akhir menjadi https://oss-cn-hangzhou.aliyuncs.com.
var endpoint = "yourEndpoint";
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel.
var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
// Masukkan nama bucket. Misalnya, examplebucket.
var bucketName = "examplebucket";
// Masukkan wilayah tempat bucket berada. Misalnya, untuk wilayah China (Hangzhou), masukkan cn-hangzhou.
const string region = "cn-hangzhou";

// Buat instans ClientConfiguration dan ubah parameter default sesuai kebutuhan.
var conf = new ClientConfiguration();

// Atur Signature Version 4.
conf.SignatureVersion = SignatureVersion.V4;

// Buat instans OssClient.
var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);
client.SetRegion(region);
try
{
    // Dapatkan status pengendalian versi bucket.
    var result = client.GetBucketVersioning(bucketName);
    Console.WriteLine("Get bucket:{0} Version succeeded ", bucketName);

    Console.WriteLine("bucket version status: {0}", result.Status);
}
catch (OssException ex)
{
    Console.WriteLine("Failed with error code: {0}; Error info: {1}. \nRequestID:{2}\tHostID:{3}",
        ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
}
catch (Exception ex)
{
    Console.WriteLine("Failed with error info: {0}", ex.Message);
}

Menampilkan semua versi objek dalam bucket

Kode contoh berikut menunjukkan cara menampilkan semua versi objek, termasuk penanda hapus, dalam sebuah bucket:

using Aliyun.OSS;
using Aliyun.OSS.Common;
// Ganti yourEndpoint dengan titik akhir wilayah tempat bucket berada. Misalnya, untuk wilayah China (Hangzhou), atur titik akhir menjadi https://oss-cn-hangzhou.aliyuncs.com.
var endpoint = "yourEndpoint";
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel.
var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
// Masukkan nama bucket. Misalnya, examplebucket.
var bucketName = "examplebucket";
// Masukkan wilayah tempat bucket berada. Misalnya, untuk wilayah China (Hangzhou), masukkan cn-hangzhou.
const string region = "cn-hangzhou";

// Buat instans ClientConfiguration dan ubah parameter default sesuai kebutuhan.
var conf = new ClientConfiguration();

// Atur Signature Version 4.
conf.SignatureVersion = SignatureVersion.V4;

// Buat instans OssClient.
var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);
client.SetRegion(region);
try
{   
    ObjectVersionList result = null;
    var request = new ListObjectVersionsRequest(bucketName);
    do {        
        result = client.ListObjectVersions(request);
        Console.WriteLine("ListObjectVersions succeeded");
        // Lihat versi objek yang ditampilkan.
        foreach (var objectversion in result.ObjectVersionSummaries)
        {
            Console.WriteLine("objectversion key: {0}; objectversion versionid: {1}", objectversion.Key, objectversion.VersionId);
        }
        // Lihat versi penanda hapus objek yang ditampilkan.
        foreach (var deletemarker in result.DeleteMarkerSummaries)
        {
            Console.WriteLine("deletemarker key: {0}; deletemarker versionid: {1}", deletemarker.Key, deletemarker.VersionId);
        }
        request.KeyMarker = result.NextKeyMarker;
        request.NextVersionIdMarker = result.NextVersionIdMarker;
    } while (result.IsTruncated)
}
catch (OssException ex)
{
    Console.WriteLine("Failed with error code: {0}; Error info: {1}. \nRequestID:{2}\tHostID:{3}",
        ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
}
catch (Exception ex)
{
    Console.WriteLine("Failed with error info: {0}", ex.Message);
}

Referensi

  • Untuk informasi tentang operasi API yang digunakan untuk mengatur status pengendalian versi bucket, lihat PutBucketVersioning.

  • Untuk informasi tentang operasi API yang digunakan untuk mengambil status pengendalian versi bucket, lihat GetBucketVersioning.