Beberapa data yang diunggah ke Object Storage Service (OSS) mungkin jarang diakses tetapi tetap perlu disimpan dalam cold storage karena persyaratan kepatuhan atau arsip. Selain itu, Anda mungkin ingin menghapus data yang tidak lagi diperlukan secara batch untuk mengurangi biaya penyimpanan. Dalam kasus seperti ini, Anda dapat mengonfigurasi aturan lifecycle berdasarkan waktu modifikasi terakhir guna secara berkala mengonversi hot data menjadi cold data atau menghapus objek yang tidak diinginkan.
Catatan penggunaan
Sebelum mengonfigurasi aturan lifecycle berdasarkan waktu modifikasi terakhir objek, pastikan Anda memahami fitur ini terlebih dahulu. Untuk informasi selengkapnya, lihat Aturan lifecycle berdasarkan waktu modifikasi terakhir.
Pada topik ini, digunakan public endpoint wilayah China (Hangzhou). Jika Anda ingin mengakses OSS dari layanan Alibaba Cloud lainnya yang berada di wilayah yang sama dengan OSS, gunakan internal endpoint. Untuk informasi selengkapnya mengenai wilayah dan endpoint OSS, lihat Wilayah dan endpoint.
Pada topik ini, instans OSSClient dibuat menggunakan endpoint OSS. Jika Anda ingin membuat instans OSSClient menggunakan custom domain name atau Security Token Service (STS), lihat Inisialisasi.
Untuk menetapkan aturan lifecycle, Anda harus memiliki izin
oss:PutBucketLifecycle. Untuk melihat aturan lifecycle, Anda harus memiliki izinoss:GetBucketLifecycle. Untuk menghapus aturan lifecycle, Anda harus memiliki izinoss:DeleteBucketLifecycle. Untuk informasi selengkapnya, lihat Berikan izin kustom kepada RAM user.
Konfigurasikan aturan lifecycle untuk bucket
Kode contoh berikut menunjukkan cara mengonfigurasi aturan lifecycle berdasarkan waktu modifikasi terakhir untuk bucket bernama examplebucket. Untuk memodifikasi aturan lifecycle, ikuti petunjuk yang dijelaskan dalam Bagaimana cara mengubah konfigurasi satu atau beberapa aturan lifecycle?
using Aliyun.OSS;
using Aliyun.OSS.Common;
// Tentukan endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint ke https://oss-cn-hangzhou.aliyuncs.com.
var endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
// Tentukan nama bucket. Contoh: examplebucket.
var bucketName = "examplebucket";
// Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou.
const string region = "cn-hangzhou";
// Buat instans ClientConfiguration dan ubah parameter default sesuai kebutuhan Anda.
var conf = new ClientConfiguration();
// Gunakan algoritma signature V4.
conf.SignatureVersion = SignatureVersion.V4;
// Buat instans OSSClient.
var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);
client.SetRegion(region);
try
{
var setBucketLifecycleRequest = new SetBucketLifecycleRequest(bucketName);
// Buat aturan lifecycle pertama.
LifecycleRule lcr1 = new LifecycleRule()
{
ID = "delete obsoleted files",
Prefix = "obsoleted/",
Status = RuleStatus.Enabled,
ExpriationDays = 3,
Tags = new Tag[1]
};
// Tentukan tag untuk aturan tersebut.
var tag1 = new Tag
{
Key = "project",
Value = "projectone"
};
lcr1.Tags[0] = tag1;
// Buat aturan lifecycle kedua.
LifecycleRule lcr2 = new LifecycleRule()
{
ID = "delete temporary files",
Prefix = "temporary/",
Status = RuleStatus.Enabled,
ExpriationDays = 20,
Tags = new Tag[1]
};
// Tentukan tag untuk aturan tersebut.
var tag2 = new Tag
{
Key = "user",
Value = "jsmith"
};
lcr2.Tags[0] = tag2;
// Tentukan bahwa part kedaluwarsa 30 hari setelah dimodifikasi terakhir.
lcr2.AbortMultipartUpload = new LifecycleRule.LifeCycleExpiration()
{
Days = 30
};
LifecycleRule lcr3 = new LifecycleRule();
lcr3.ID = "only NoncurrentVersionTransition";
lcr3.Prefix = "test1";
lcr3.Status = RuleStatus.Enabled;
lcr3.NoncurrentVersionTransitions = new LifecycleRule.LifeCycleNoncurrentVersionTransition[2]
{
// Tentukan bahwa kelas penyimpanan versi sebelumnya objek diubah menjadi IA 90 hari setelah dimodifikasi terakhir.
new LifecycleRule.LifeCycleNoncurrentVersionTransition(){
StorageClass = StorageClass.IA,
NoncurrentDays = 90
},
// Tentukan bahwa kelas penyimpanan versi sebelumnya objek diubah menjadi Archive 180 hari setelah dimodifikasi terakhir.
new LifecycleRule.LifeCycleNoncurrentVersionTransition(){
StorageClass = StorageClass.Archive,
NoncurrentDays = 180
}
};
setBucketLifecycleRequest.AddLifecycleRule(lcr1);
setBucketLifecycleRequest.AddLifecycleRule(lcr2);
setBucketLifecycleRequest.AddLifecycleRule(lcr3);
// Konfigurasikan aturan lifecycle.
client.SetBucketLifecycle(setBucketLifecycleRequest);
Console.WriteLine("Set bucket:{0} Lifecycle succeeded ", bucketName);
}
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);
}Kueri aturan lifecycle bucket
Kode contoh berikut menunjukkan cara menanyakan aturan lifecycle yang dikonfigurasi untuk examplebucket:
using Aliyun.OSS;
using Aliyun.OSS.Common;
// Tentukan endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint ke https://oss-cn-hangzhou.aliyuncs.com.
var endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
// Tentukan nama bucket. Contoh: examplebucket.
var bucketName = "examplebucket";
// Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou.
const string region = "cn-hangzhou";
// Buat instans ClientConfiguration dan ubah parameter default sesuai kebutuhan Anda.
var conf = new ClientConfiguration();
// Gunakan algoritma signature V4.
conf.SignatureVersion = SignatureVersion.V4;
// Buat instans OSSClient.
var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);
client.SetRegion(region);
try
{
// Kueri aturan lifecycle bucket.
var rules = client.GetBucketLifecycle(bucketName);
Console.WriteLine("Get bucket:{0} Lifecycle succeeded ", bucketName);
foreach (var rule in rules)
{
Console.WriteLine("ID: {0}", rule.ID);
Console.WriteLine("Prefix: {0}", rule.Prefix);
Console.WriteLine("Status: {0}", rule.Status);
// Kueri tag yang ditentukan untuk aturan lifecycle.
foreach (var tag in rule.Tags)
{
Console.WriteLine("key:{0}, value:{1}", tag.Key, tag.Value);
}
// Kueri aturan kedaluwarsa untuk versi sebelumnya objek.
foreach (var version in rule.NoncurrentVersionTransitions)
{
Console.WriteLine("expiration day:{0}, storage class:{1}", version.NoncurrentDays, version.StorageClass);
}
if (rule.ExpriationDays.HasValue)
Console.WriteLine("ExpirationDays: {0}", rule.ExpriationDays);
}
}
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);
}Hapus semua aturan lifecycle bucket
Kode contoh berikut menunjukkan cara menghapus aturan lifecycle yang dikonfigurasi untuk examplebucket. Untuk menghapus satu atau beberapa aturan lifecycle, ikuti petunjuk yang dijelaskan dalam Bagaimana cara menghapus satu atau beberapa aturan lifecycle?
using Aliyun.OSS;
using Aliyun.OSS.Common;
// Tentukan endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint ke https://oss-cn-hangzhou.aliyuncs.com.
var endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
// Tentukan nama bucket. Contoh: examplebucket.
var bucketName = "examplebucket";
// Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou.
const string region = "cn-hangzhou";
// Buat instans ClientConfiguration dan ubah parameter default sesuai kebutuhan Anda.
var conf = new ClientConfiguration();
// Gunakan algoritma signature V4.
conf.SignatureVersion = SignatureVersion.V4;
// Buat instans OSSClient.
var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);
client.SetRegion(region);
try
{
// Hapus aturan lifecycle.
client.DeleteBucketLifecycle(bucketName);
Console.WriteLine("Delete bucket:{0} Lifecycle succeeded ", bucketName);
}
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 kode contoh lengkap yang digunakan untuk mengelola aturan lifecycle, kunjungi GitHub.
Untuk informasi selengkapnya mengenai operasi API yang dapat dipanggil untuk mengonfigurasi aturan lifecycle, lihat PutBucketLifecycle.
Untuk informasi selengkapnya mengenai operasi API yang dapat dipanggil untuk menanyakan aturan lifecycle, lihat GetBucketLifecycle.
Untuk informasi selengkapnya mengenai operasi API yang dapat dipanggil untuk menghapus aturan lifecycle, lihat DeleteBucketLifecycle.