Object Storage Service (OSS) menyediakan beberapa kelas penyimpanan untuk berbagai skenario, mulai dari data panas hingga data dingin: Standar, Akses Jarang (IA), Arsip, Penyimpanan Arsip Dingin, dan Deep Cold Archive. Topik ini menjelaskan cara mengubah kelas penyimpanan suatu objek.
Catatan penggunaan
Sebelum menjalankan kode contoh dalam topik ini, Anda harus membuat instans OSSClient dengan metode seperti menggunakan nama domain kustom atau Security Token Service (STS). Untuk informasi selengkapnya, lihat Initialization.
Contoh
Mengubah kelas penyimpanan objek dari Standar atau IA menjadi Arsip
Kode contoh berikut menunjukkan cara mengubah kelas penyimpanan objek bernama exampleobject.txt dari Standar atau IA menjadi Arsip. Dalam contoh ini, objek disimpan di direktori root bucket bernama examplebucket.
OSSCopyObjectRequest * copy = [OSSCopyObjectRequest new]; copy.sourceBucketName = @"examplebucket"; copy.sourceObjectKey = @"exampleobject.txt"; copy.bucketName = @"examplebucket"; copy.objectKey = @"exampleobject.txt"; // Setel kelas penyimpanan objek exampleobject.txt menjadi Arsip. copy.objectMeta = @{@"x-oss-storage-class" : @"Archive"}; OSSTask * task = [client copyObject:copy]; [task continueWithBlock:^id(OSSTask *task) { if (!task.error) { NSLog(@"Salinan objek berhasil!"); } else { NSLog(@"Salinan objek gagal, kesalahan: %@" , task.error); } return nil; }]; // Implementasikan pemblokiran sinkron untuk menunggu tugas selesai. // [task waitUntilFinished];Mengubah kelas penyimpanan objek dari Arsip, Penyimpanan Arsip Dingin, atau Deep Cold Archive menjadi IA
Kode contoh berikut menunjukkan cara mengubah kelas penyimpanan objek bernama exampleobject.txt dari Arsip, Penyimpanan Arsip Dingin, atau Deep Cold Archive menjadi IA. Dalam contoh ini, objek disimpan di direktori root bucket bernama examplebucket.
NSString *bucketName = @"examplebucket"; NSString *objectKey = @"exampleobject.txt"; // Baris berikut memeriksa apakah kelas penyimpanan objek adalah Arsip. Jika kelas penyimpanan objek adalah Arsip, Anda harus memulihkan objek sebelum dapat mengubah kelas penyimpanannya. // Untuk memeriksa apakah kelas penyimpanan objek adalah Penyimpanan Arsip Dingin atau Deep Cold Archive, ganti isArchived dengan isColdArchived atau isDeepColdArchived. __block bool isArchived = false; OSSHeadObjectRequest *headRq = [OSSHeadObjectRequest new]; headRq.bucketName = bucketName; headRq.objectKey = objectKey; [[[client headObject:headRq] continueWithBlock:^id _Nullable(OSSTask * _Nonnull task) { if (!task.error) { OSSHeadObjectResult *headRs = task.result; isArchived = [headRs.httpResponseHeaderFields[@"x-oss-storage-class"] isEqualToString:@"Archive"]; } else { NSLog(@"Pemeriksaan objek gagal! kesalahan: %@", task.error); } return nil; }] waitUntilFinished]; if (isArchived) { // Pulihkan objek. OSSRestoreObjectRequest *restoreRequest = [OSSRestoreObjectRequest new]; restoreRequest.bucketName = bucketName; restoreRequest.objectKey = objectKey; [[[client restoreObject:restoreRequest] continueWithBlock:^id _Nullable(OSSTask * _Nonnull task) { if (!task.error) { NSLog(@"Pemulihan objek berhasil!"); } else { NSLog(@"Pemulihan objek gagal! kesalahan: %@", task.error); } return nil; }] waitUntilFinished]; // Tunggu hingga objek dipulihkan. __block bool isRestored = false; do { sleep(1); headRq = [OSSHeadObjectRequest new]; headRq.bucketName = bucketName; headRq.objectKey = objectKey; [[[client headObject:headRq] continueWithBlock:^id _Nullable(OSSTask * _Nonnull task) { if (!task.error) { OSSHeadObjectResult *headRs = task.result; isRestored = (headRs.httpResponseHeaderFields[@"x-oss-restore"] != nil && ![headRs.httpResponseHeaderFields[@"x-oss-restore"] isEqualToString:@"ongoing-request=\"true\""]); } else { NSLog(@"Pemeriksaan objek gagal! kesalahan: %@", task.error); } return nil; }] waitUntilFinished]; } while (!isRestored); } // Setel kelas penyimpanan objek exampleobject.txt menjadi IA. OSSCopyObjectRequest *copy = [OSSCopyObjectRequest new]; copy.bucketName = bucketName; copy.objectKey = objectKey; copy.sourceBucketName = bucketName; copy.sourceObjectKey = objectKey; copy.objectMeta = @{@"x-oss-storage-class": @"IA"}; [[[client copyObject:copy] continueWithBlock:^id(OSSTask *task) { if (!task.error) { NSLog(@"Salinan objek berhasil!"); } else { NSLog(@"Salinan objek gagal, kesalahan: %@" , task.error); } return nil; }] waitUntilFinished];
Referensi
Untuk informasi lebih lanjut tentang operasi API yang dapat Anda panggil untuk mengubah kelas penyimpanan objek, lihat CopyObject.
Untuk informasi lebih lanjut tentang cara menginisialisasi instance OSSClient, lihat Inisialisasi.