全部产品
Search
文档中心

Object Storage Service:Mengonversi kelas penyimpanan objek

更新时间:Dec 24, 2025

Object Storage Service (OSS) mendukung beberapa kelas penyimpanan: Standard, Infrequent Access (IA), Archive, Cold Archive, dan Deep Cold Archive. Anda dapat menggunakan aturan siklus hidup untuk secara otomatis mengonversi kelas penyimpanan suatu objek atau mengonversinya secara manual dengan memanggil operasi CopyObject.

Peringatan
  • Untuk bucket yang telah mengaktifkan OSS-HDFS, jangan mengubah kelas penyimpanan objek apa pun di direktori penyimpanan data .dlsdata/.

  • Jika Anda mengubah kelas penyimpanan objek di direktori .dlsdata/ menjadi IA, objek tersebut tetap dapat diakses melalui OSS-HDFS. Namun, jika Anda mengubah kelas penyimpanannya menjadi Archive, Cold Archive, atau Deep Cold Archive, objek tersebut tidak dapat diakses melalui OSS-HDFS. Untuk mengaksesnya, Anda harus terlebih dahulu memulihkannya.

Mengonversi kelas penyimpanan objek secara otomatis menggunakan aturan siklus hidup

Mengonversi kelas penyimpanan berdasarkan waktu modifikasi terakhir

  • Locally redundant storage (LRS)本地冗余

    Aturan konversi untuk objek LRS adalah sebagai berikut:

    • Objek Standard LRS dapat dikonversi ke IA LRS, Archive LRS, Cold Archive LRS, atau Deep Cold Archive LRS.

    • Objek IA LRS dapat dikonversi ke Archive LRS, Cold Archive LRS, atau Deep Cold Archive LRS.

    • Objek Archive LRS dapat dikonversi ke Cold Archive LRS atau Deep Cold Archive LRS.

    • Objek Cold Archive LRS dapat dikonversi ke Deep Cold Archive LRS.

    Jika Anda mengonfigurasi aturan siklus hidup untuk mengonversi objek ke IA, Archive, Cold Archive, dan Deep Cold Archive dalam bucket yang sama, periode transisi yang ditentukan harus memenuhi kondisi berikut:

    Periode transisi ke IA < Periode transisi ke Archive < Periode transisi ke Cold Archive < Periode transisi ke Deep Cold Archive

  • Zone-redundant storage (ZRS)同城

    Aturan transformasi untuk file dalam penyimpanan redundan zona adalah sebagai berikut:

    • Objek Standard ZRS dapat dikonversi ke IA ZRS, Archive ZRS, Cold Archive LRS, atau Deep Cold Archive LRS.

    • Objek IA ZRS dapat dikonversi ke Archive ZRS, Cold Archive LRS, atau Deep Cold Archive LRS.

    • Objek Archive ZRS dapat dikonversi ke Cold Archive LRS atau Deep Cold Archive LRS.

    • Objek Cold Archive LRS dapat dikonversi ke Deep Cold Archive LRS.

Untuk informasi selengkapnya, lihat Aturan siklus hidup berdasarkan waktu modifikasi terakhir.

Mengonversi kelas penyimpanan berdasarkan waktu akses terakhir

Penting
  • Untuk mengonversi objek dari kelas penyimpanan Standard atau IA ke kelas penyimpanan Archive, Cold Archive, atau Deep Cold Archive, Anda harus mengajukan tiket untuk memperoleh izin yang diperlukan. Setelah permohonan Anda disetujui, Anda dapat menentukan kelas penyimpanan tujuan.

  • Setelah permohonan Anda disetujui, jika Anda menggunakan aturan siklus hidup berdasarkan waktu akses terakhir untuk mengonversi objek dari Standard atau IA ke Archive, Cold Archive, atau Deep Cold Archive, waktu akses terakhir objek tersebut dianggap sebagai waktu ketika pelacakan akses diaktifkan untuk bucket tersebut.

  • Locally Redundant Storage (LRS)

    1.jpg

    Aturan konversi untuk objek LRS adalah sebagai berikut:

    • Objek Standard LRS dapat dikonversi ke IA LRS, Archive LRS, Cold Archive LRS, atau Deep Cold Archive LRS.

    • Setelah objek dikonversi dari Standard LRS ke IA LRS, Anda juga dapat menentukan apakah akan secara otomatis mengonversinya kembali ke Standard LRS setelah diakses.

    • Objek IA LRS dapat dikonversi ke Archive LRS, Cold Archive LRS, atau Deep Cold Archive LRS.

    • Objek Archive LRS dapat dikonversi ke Cold Archive LRS atau Deep Cold Archive LRS.

    • Objek Cold Archive LRS dapat dikonversi ke Deep Cold Archive LRS.

  • ZRS

    2.jpg

    Aturan transformasi untuk file dalam penyimpanan redundan zona adalah sebagai berikut:

    • Objek Standard ZRS dapat dikonversi ke IA ZRS, Archive ZRS, Cold Archive LRS, atau Deep Cold Archive LRS.

    • Setelah objek dikonversi dari Standard ZRS ke IA ZRS, Anda juga dapat menentukan apakah akan secara otomatis mengonversinya kembali ke Standard ZRS setelah diakses.

    • Objek IA ZRS dapat dikonversi ke Archive ZRS, Cold Archive LRS, atau Deep Cold Archive LRS.

    • Objek Archive ZRS dapat dikonversi ke Cold Archive LRS atau Deep Cold Archive LRS.

    • Objek Cold Archive LRS dapat dikonversi ke Deep Cold Archive LRS.

Untuk informasi selengkapnya, lihat Aturan siklus hidup berdasarkan waktu akses terakhir.

Metode mengonversi kelas penyimpanan menggunakan aturan siklus hidup

Anda dapat menggunakan beberapa metode untuk mengonfigurasi aturan siklus hidup. Aturan ini dapat mentransisikan objek ke kelas penyimpanan tertentu setelah periode tertentu atau menghapus objek dan bagian yang kedaluwarsa. Langkah-langkah berikut menjelaskan cara menggunakan aturan siklus hidup untuk mentransisikan objek ke kelas penyimpanan tertentu.

Gunakan Konsol OSS

  1. Masuk ke OSS console.

  2. Di panel navigasi sebelah kiri, klik Buckets. Pada halaman Buckets, temukan dan klik bucket yang diinginkan.

  3. Di panel navigasi sebelah kiri, pilih Data Management > Lifecycle.

  4. Opsional: Untuk membuat aturan siklus hidup berdasarkan waktu akses terakhir, aktifkan sakelar Enable Access Tracking pada halaman Lifecycle.

  5. Pada halaman Lifecycle, klik Create Rule.

  6. Pada panel Create Lifecycle Rule, atur parameter aturan seperti yang dijelaskan dalam tabel berikut.

    • Bucket tanpa versioning

      Bagian

      Parameter

      Deskripsi

      Basic Settings

      Status

      Tentukan status aturan siklus hidup. Anda dapat memilih Enabled atau Disabled.

      • Setelah aturan siklus hidup diaktifkan, kelas penyimpanan objek akan dikonversi atau objek akan dihapus berdasarkan aturan siklus hidup tersebut.

      • Setelah Anda menonaktifkan aturan siklus hidup, tugas siklus hidup dari aturan tersebut akan dihentikan.

      Applied To

      Tentukan objek yang ingin diterapkan aturan siklus hidup. Anda dapat memilih Objects with Specified Prefix atau Whole Bucket.

      Catatan

      Jika Anda memilih Objects with Specified Prefix, Anda harus menentukan awalan lengkap. Misalnya, jika Anda ingin menerapkan aturan siklus hidup pada objek yang namanya mengandung awalan src/dir1, masukkan src/dir1. Jika Anda hanya memasukkan dir1, aturan siklus hidup tidak akan memberikan efek yang diinginkan.

      Allow Overlapped Prefixes

      Tentukan apakah akan mengizinkan awalan yang tumpang tindih. Secara default, OSS memeriksa apakah awalan setiap aturan siklus hidup tumpang tindih. Misalnya, jika bucket memiliki aturan siklus hidup yang sudah ada (Aturan 1) dan Anda ingin mengonfigurasi aturan siklus hidup lain (Aturan 2) yang mengandung awalan tumpang tindih:

      • Aturan 1

        Hapus semua objek yang namanya mengandung awalan dir1/ di bucket 180 hari setelah objek tersebut terakhir dimodifikasi.

      • Aturan 2

        Konversi kelas penyimpanan semua objek yang namanya mengandung awalan dir1/dir2/ di bucket ke IA 30 hari setelah objek tersebut terakhir dimodifikasi dan hapus objek tersebut 60 hari setelah terakhir dimodifikasi.

      Jika Anda tidak memilih kotak centang ini, OSS mendeteksi bahwa objek di direktori dir1/dir2/ cocok dengan dua aturan siklus hidup, menolak pembuatan Aturan 2, dan mengembalikan pesan kesalahan Overlap for same action type Expiration.

      Jika Anda memilih kotak centang ini, Aturan 2 dibuat untuk mengonversi kelas penyimpanan objek di direktori dir1/dir2/ ke IA 30 hari setelah objek tersebut terakhir dimodifikasi dan menghapusnya 60 hari setelah terakhir dimodifikasi. Objek lain di direktori dir1/ dihapus 180 hari setelah terakhir dimodifikasi.

      Catatan

      Jika sebuah bucket memiliki beberapa aturan siklus hidup, salah satunya berlaku untuk seluruh bucket, maka aturan siklus hidup tersebut memiliki awalan yang tumpang tindih.

      Prefix

      Tentukan awalan dalam nama objek yang ingin diterapkan aturan siklus hidup.

      • Jika Anda mengatur awalan ke img, semua objek yang namanya mengandung awalan img, seperti imgtest.png dan img/example.jpg, cocok dengan aturan siklus hidup tersebut.

      • Jika Anda mengatur awalan ke img/, semua objek yang namanya mengandung awalan img/, seperti img/example.jpg dan img/test.jpg, cocok dengan aturan siklus hidup tersebut.

      Tag

      Tentukan tag. Aturan hanya berlaku untuk objek yang memiliki tag yang ditentukan.

      • Misalnya, jika Anda menentukan tag dalam aturan siklus hidup dan tidak menentukan awalan dalam aturan tersebut, aturan siklus hidup berlaku untuk semua objek yang memiliki tag tersebut di bucket.

      • Jika Anda menentukan tag a=1 dan awalan img dalam aturan siklus hidup, aturan tersebut berlaku untuk semua objek yang memiliki awalan img dalam nama objeknya dan memiliki tag a=1 di bucket.

      Untuk informasi selengkapnya, lihat Tag objects.

      NOT

      Tentukan bahwa aturan siklus hidup tidak berlaku untuk objek yang memiliki awalan nama dan tag yang ditentukan.

      Penting
      • Jika Anda mengaktifkan NOT, setidaknya salah satu parameter Prefix dan Tag harus ditentukan untuk aturan siklus hidup tersebut.

      • Kunci tag yang ditentukan untuk parameter NOT tidak boleh sama dengan kunci yang ditentukan untuk parameter Tag.

      • Jika Anda mengaktifkan NOT, Anda tidak dapat menyertakan kebijakan bagian dalam aturan siklus hidup tersebut.

      Object Size

      Tentukan ukuran objek yang ingin diterapkan aturan siklus hidup.

      • Minimum Size: Tentukan bahwa aturan siklus hidup hanya berlaku untuk objek yang ukurannya lebih besar dari ukuran yang ditentukan. Anda dapat menentukan ukuran objek minimum yang lebih besar dari 0 B dan kurang dari 5 TB.

      • Maximum Size: Tentukan bahwa aturan siklus hidup hanya berlaku untuk objek yang ukurannya lebih kecil dari ukuran yang ditentukan. Anda dapat menentukan ukuran objek maksimum yang lebih besar dari 0 B dan kurang dari atau sama dengan 5 TB.

      Penting

      Jika Anda menentukan ukuran objek minimum dan ukuran objek maksimum dalam aturan siklus hidup yang sama, perhatikan hal-hal berikut:

      • Ukuran objek maksimum harus lebih besar dari ukuran objek minimum.

      • Anda tidak dapat menyertakan kebijakan bagian dalam aturan siklus hidup tersebut.

      • Anda tidak dapat menyertakan kebijakan untuk menghapus penanda hapus.

      Policy for Objects

      Object Lifecycle

      Tentukan kebijakan kedaluwarsa objek. Anda dapat memilih Validity Period (Days), Expiration Date, atau Disabled. Jika Anda memilih Disabled, tidak ada kebijakan kedaluwarsa objek yang dikonfigurasi.

      Lifecycle-based Rules

      Konfigurasikan aturan siklus hidup untuk mengonversi kelas penyimpanan objek atau menghapus objek yang kedaluwarsa. Anda dapat memilih IA, Archive, Cold Archive, Deep Cold Archive, atau Delete Objects (Cannot Be Recovered).

      Misalnya, Anda memilih Expiration Date untuk Object Lifecycle, menentukan 24 September 2023 sebagai tanggal kedaluwarsa, dan menentukan Delete Objects (Cannot Be Recovered). Dalam kasus ini, objek yang terakhir dimodifikasi sebelum 24 September 2023 akan dihapus secara otomatis dan tidak dapat dipulihkan.

      Policy for Parts

      Part Lifecycle

      Tentukan kebijakan bagian. Jika Anda mengonfigurasi parameter Tag, parameter ini tidak tersedia. Anda dapat memilih Validity Period (Days), Expiration Date, atau Disabled. Jika Anda memilih Disabled, tidak ada kebijakan bagian yang dikonfigurasi.

      Penting

      Aturan siklus hidup harus berisi setidaknya salah satu kebijakan kedaluwarsa objek atau kebijakan kedaluwarsa bagian.

      Rules for Parts

      Tentukan kapan bagian kedaluwarsa. Anda dapat menentukan periode validitas atau tanggal kedaluwarsa. Bagian yang kedaluwarsa akan dihapus secara otomatis dan tidak dapat dipulihkan.

    • Bucket dengan versioning

      Konfigurasikan parameter di bagian Basic Settings dan Policy for Parts dengan cara yang sama seperti mengonfigurasi parameter untuk bucket tanpa versioning. Tabel berikut hanya menjelaskan parameter yang berbeda dari parameter yang Anda konfigurasi untuk bucket tanpa versioning.

      Penting

      Sebelum mengonfigurasi aturan siklus hidup, perhatikan hal berikut:

      Jika bucket Anda telah mengaktifkan versioning dan merupakan tujuan untuk Cross-Region Replication (CRR), penanda hapus yang direplikasi dari bucket sumber akan menyebabkan objek dengan nama yang sama di bucket ini menjadi versi sebelumnya.

      Oleh karena itu, konfigurasikan aturan siklus hidup apa pun yang membersihkan versi sebelumnya dengan sangat hati-hati untuk menghindari kehilangan data yang tidak disengaja di bucket tujuan.

      Bagian

      Parameter

      Deskripsi

      Policy for Current Versions

      Removal of Delete Marker

      Jika bucket menggunakan versioning, opsi Removal of Delete Marker ditambahkan ke parameter Object Lifecycle. Parameter lainnya sama dengan yang dapat Anda konfigurasi untuk bucket tanpa versioning.

      Jika Anda memilih Removal of Delete Marker, dan suatu objek hanya memiliki satu versi, yaitu penanda hapus, OSS menganggap penanda hapus tersebut kedaluwarsa dan menghapus penanda hapus tersebut. Jika suatu objek memiliki beberapa versi dan versi saat ini dari objek tersebut adalah penanda hapus, OSS mempertahankan penanda hapus tersebut. Untuk informasi selengkapnya tentang penanda hapus, lihat Delete marker.

      Penting

      Jika objek yang cocok memiliki versi sebelumnya, aturan siklus hidup tidak menghapus penanda hapus objek tersebut. Kami menyarankan agar Anda menghapus versi objek sebelumnya yang tidak lagi diperlukan dan penanda hapus untuk mencegah penurunan kinerja daftar akibat banyaknya penanda hapus.

      Policy for Previous Versions

      Object Lifecycle

      Tentukan waktu kedaluwarsa versi sebelumnya. Anda dapat memilih Validity Period (Days) atau Disabled. Jika Anda memilih Disabled, tidak ada kebijakan objek yang dikonfigurasi.

      Lifecycle-based Rules

      Tentukan jumlah hari objek dapat disimpan setelah menjadi versi sebelumnya. Setelah kedaluwarsa, tindakan yang ditentukan akan dilakukan pada versi sebelumnya pada hari berikutnya. Misalnya, jika Anda mengatur parameter Validity Period (Days) ke 30, objek yang menjadi versi sebelumnya pada 1 September 2023 akan dipindahkan ke kelas penyimpanan yang ditentukan atau dihapus pada 1 Oktober 2023.

      Penting

      Anda dapat menentukan kapan suatu objek menjadi versi sebelumnya berdasarkan waktu versi berikutnya dihasilkan.

  7. Klik OK.

    Setelah aturan siklus hidup disimpan, Anda dapat melihat aturan tersebut dalam daftar aturan.

Gunakan Alibaba Cloud SDKs

Kode berikut memberikan contoh cara mengonfigurasi aturan siklus hidup menggunakan SDK umum. Untuk informasi tentang cara mengonfigurasi aturan siklus hidup menggunakan SDK lainnya, lihat Overview.

Java

import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.common.utils.DateUtil;
import com.aliyun.oss.model.LifecycleRule;
import com.aliyun.oss.model.SetBucketLifecycleRequest;
import com.aliyun.oss.model.StorageClass;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class Demo {

    public static void main(String[] args) throws Exception {
        // Endpoint China (Hangzhou) digunakan sebagai contoh. Gantilah dengan endpoint yang sebenarnya.
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Tentukan nama bucket, misalnya examplebucket.
        String bucketName = "examplebucket";
        // Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou.
        String region = "cn-hangzhou";

        // Buat instance OSSClient.
        // Saat instance OSSClient tidak lagi digunakan, panggil metode shutdown untuk melepaskan sumber daya.
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);        
        OSS ossClient = OSSClientBuilder.create()
        .endpoint(endpoint)
        .credentialsProvider(credentialsProvider)
        .clientConfiguration(clientBuilderConfiguration)
        .region(region)               
        .build();

        try {
            // Buat SetBucketLifecycleRequest.
            SetBucketLifecycleRequest request = new SetBucketLifecycleRequest(bucketName);

            // Atur ID aturan.
            String ruleId0 = "rule0";
            // Atur awalan untuk mencocokkan file.
            String matchPrefix0 = "A0/";
            // Atur tag untuk dicocokkan.
            Map<String, String> matchTags0 = new HashMap<String, String>();
            // Tentukan kunci (misalnya, owner) dan nilai (misalnya, John) dari tag yang akan dicocokkan.
            matchTags0.put("owner", "John");


            String ruleId1 = "rule1";
            String matchPrefix1 = "A1/";
            Map<String, String> matchTags1 = new HashMap<String, String>();
            matchTags1.put("type", "document");

            String ruleId2 = "rule2";
            String matchPrefix2 = "A2/";

            String ruleId3 = "rule3";
            String matchPrefix3 = "A3/";

            String ruleId4 = "rule4";
            String matchPrefix4 = "A4/";

            String ruleId5 = "rule5";
            String matchPrefix5 = "A5/";

            String ruleId6 = "rule6";
            String matchPrefix6 = "A6/";

            // Kedaluwarsa objek 3 hari setelah waktu modifikasi terakhirnya.
            LifecycleRule rule = new LifecycleRule(ruleId0, matchPrefix0, LifecycleRule.RuleStatus.Enabled, 3);
            rule.setTags(matchTags0);
            request.AddLifecycleRule(rule);

            // Kedaluwarsa objek yang dibuat sebelum tanggal yang ditentukan.
            rule = new LifecycleRule(ruleId1, matchPrefix1, LifecycleRule.RuleStatus.Enabled);
            rule.setCreatedBeforeDate(DateUtil.parseIso8601Date("2022-10-12T00:00:00.000Z"));
            rule.setTags(matchTags1);
            request.AddLifecycleRule(rule);

            // Kedaluwarsa bagian 3 hari setelah dibuat.
            rule = new LifecycleRule(ruleId2, matchPrefix2, LifecycleRule.RuleStatus.Enabled);
            LifecycleRule.AbortMultipartUpload abortMultipartUpload = new LifecycleRule.AbortMultipartUpload();
            abortMultipartUpload.setExpirationDays(3);
            rule.setAbortMultipartUpload(abortMultipartUpload);
            request.AddLifecycleRule(rule);

            // Kedaluwarsa bagian yang dibuat sebelum tanggal yang ditentukan.
            rule = new LifecycleRule(ruleId3, matchPrefix3, LifecycleRule.RuleStatus.Enabled);
            abortMultipartUpload = new LifecycleRule.AbortMultipartUpload();
            abortMultipartUpload.setCreatedBeforeDate(DateUtil.parseIso8601Date("2022-10-12T00:00:00.000Z"));
            rule.setAbortMultipartUpload(abortMultipartUpload);
            request.AddLifecycleRule(rule);

            // Transisikan objek ke kelas penyimpanan Infrequent Access 10 hari setelah waktu modifikasi terakhirnya, dan ke kelas penyimpanan Archive 30 hari setelah waktu modifikasi terakhirnya.
            rule = new LifecycleRule(ruleId4, matchPrefix4, LifecycleRule.RuleStatus.Enabled);
            List<LifecycleRule.StorageTransition> storageTransitions = new ArrayList<LifecycleRule.StorageTransition>();
            LifecycleRule.StorageTransition storageTransition = new LifecycleRule.StorageTransition();
            storageTransition.setStorageClass(StorageClass.IA);
            storageTransition.setExpirationDays(10);
            storageTransitions.add(storageTransition);
            storageTransition = new LifecycleRule.StorageTransition();
            storageTransition.setStorageClass(StorageClass.Archive);
            storageTransition.setExpirationDays(30);
            storageTransitions.add(storageTransition);
            rule.setStorageTransition(storageTransitions);
            request.AddLifecycleRule(rule);

            // Transisikan objek yang terakhir dimodifikasi sebelum 12 Oktober 2022 ke Archive Storage.
            rule = new LifecycleRule(ruleId5, matchPrefix5, LifecycleRule.RuleStatus.Enabled);
            storageTransitions = new ArrayList<LifecycleRule.StorageTransition>();
            storageTransition = new LifecycleRule.StorageTransition();

            storageTransition.setCreatedBeforeDate(DateUtil.parseIso8601Date("2022-10-12T00:00:00.000Z"));

            storageTransition.setStorageClass(StorageClass.Archive);
            storageTransitions.add(storageTransition);
            rule.setStorageTransition(storageTransitions);
            request.AddLifecycleRule(rule);

            // rule6 berlaku untuk bucket yang mengaktifkan versioning.
            rule = new LifecycleRule(ruleId6, matchPrefix6, LifecycleRule.RuleStatus.Enabled);
            // Secara otomatis transisikan objek ke objek arsip 365 hari setelah waktu modifikasi terakhirnya.
            storageTransitions = new ArrayList<LifecycleRule.StorageTransition>();
            storageTransition = new LifecycleRule.StorageTransition();
            storageTransition.setStorageClass(StorageClass.Archive);
            storageTransition.setExpirationDays(365);
            storageTransitions.add(storageTransition);
            rule.setStorageTransition(storageTransitions);
            // Secara otomatis hapus penanda hapus yang kedaluwarsa.
            rule.setExpiredDeleteMarker(true);
            // Transisikan versi non-saat ini objek ke kelas penyimpanan Infrequent Access 10 hari setelah waktu modifikasi terakhirnya.
            LifecycleRule.NoncurrentVersionStorageTransition noncurrentVersionStorageTransition =
                    new LifecycleRule.NoncurrentVersionStorageTransition().withNoncurrentDays(10).withStrorageClass(StorageClass.IA);
            // Transisikan versi non-saat ini objek ke kelas penyimpanan Archive 20 hari setelah waktu modifikasi terakhirnya.
            LifecycleRule.NoncurrentVersionStorageTransition noncurrentVersionStorageTransition2 =
                    new LifecycleRule.NoncurrentVersionStorageTransition().withNoncurrentDays(20).withStrorageClass(StorageClass.Archive);
            // Hapus versi non-saat ini objek setelah 30 hari.
            LifecycleRule.NoncurrentVersionExpiration noncurrentVersionExpiration = new LifecycleRule.NoncurrentVersionExpiration().withNoncurrentDays(30);
            List<LifecycleRule.NoncurrentVersionStorageTransition> noncurrentVersionStorageTransitions = new ArrayList<LifecycleRule.NoncurrentVersionStorageTransition>();
            noncurrentVersionStorageTransitions.add(noncurrentVersionStorageTransition2);
            rule.setStorageTransition(storageTransitions);
            rule.setNoncurrentVersionExpiration(noncurrentVersionExpiration);
            rule.setNoncurrentVersionStorageTransitions(noncurrentVersionStorageTransitions);
            request.AddLifecycleRule(rule);

            // Kirim permintaan untuk mengatur aturan siklus hidup.
            ossClient.setBucketLifecycle(request);

            // Lihat aturan siklus hidup.
            List<LifecycleRule> listRules = ossClient.getBucketLifecycle(bucketName);
            for(LifecycleRule rules : listRules){
                System.out.println("ruleId="+rules.getId()+", matchPrefix="+rules.getPrefix());
            }
        } catch (OSSException oe) {
            System.out.println("Caught an OSSException, which means your request made it to OSS, "
                    + "but was rejected with an error response for some reason.");
            System.out.println("Error Message:" + oe.getErrorMessage());
            System.out.println("Error Code:" + oe.getErrorCode());
            System.out.println("Request ID:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Caught an ClientException, which means the client encountered "
                    + "a serious internal problem while trying to communicate with OSS, "
                    + "such as not being able to access the network.");
            System.out.println("Error Message:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}

PHP

<?php
if (is_file(__DIR__ . '/../autoload.php')) {
    require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
    require_once __DIR__ . '/../vendor/autoload.php';
}

use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;
use OSS\CoreOssException;
use OSS\Model\LifecycleConfig;
use OSS\Model\LifecycleRule;
use OSS\Model\LifecycleAction;

// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
$provider = new EnvironmentVariableCredentialsProvider();
// Endpoint China (Hangzhou) digunakan sebagai contoh. Gantilah dengan endpoint aktual untuk wilayah Anda.
$endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Masukkan nama bucket.
$bucket= "examplebucket";

// Atur ID aturan dan awalan file.
$ruleId0 = "rule0";
$matchPrefix0 = "A0/";
$ruleId1 = "rule1";
$matchPrefix1 = "A1/";

$lifecycleConfig = new LifecycleConfig();
$actions = array();
// Kedaluwarsa objek 3 hari setelah waktu modifikasi terakhirnya.
$actions[] = new LifecycleAction(OssClient::OSS_LIFECYCLE_EXPIRATION, OssClient::OSS_LIFECYCLE_TIMING_DAYS, 3);
$lifecycleRule = new LifecycleRule($ruleId0, $matchPrefix0, "Enabled", $actions);
$lifecycleConfig->addRule($lifecycleRule);
$actions = array();
// Kedaluwarsa objek yang dibuat sebelum tanggal yang ditentukan.
$actions[] = new LifecycleAction(OssClient::OSS_LIFECYCLE_EXPIRATION, OssClient::OSS_LIFECYCLE_TIMING_DATE, '2022-10-12T00:00:00.000Z');
$lifecycleRule = new LifecycleRule($ruleId1, $matchPrefix1, "Enabled", $actions);
$lifecycleConfig->addRule($lifecycleRule);
try {
    $config = array(
        "provider" => $provider,
        "endpoint" => $endpoint,
        "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
        "region"=> "cn-hangzhou"
    );
    $ossClient = new OssClient($config);

    $ossClient->putBucketLifecycle($bucket, $lifecycleConfig);
} catch (OssException $e) {
    printf(__FUNCTION__ . ": FAILED\n");
    printf($e->getMessage() . "\n");
    return;
}
print(__FUNCTION__ . ": OK" . "\n");

Node.js

const OSS = require('ali-oss')

const client = new OSS({
  // Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke oss-cn-hangzhou. 
  region: 'yourregion',
  // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. 
  accessKeyId: process.env.OSS_ACCESS_KEY_ID,
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
  authorizationV4: true,
  // Tentukan nama bucket. 
  bucket: 'yourbucketname'
});

async function getBucketLifecycle () {
  try {
    const result = await client.getBucketLifecycle('Yourbucketname');
    console.log(result.rules); // Kueri aturan siklus hidup. 

    result.rules.forEach(rule => {
      console.log(rule.id) // Kueri ID aturan.  
      console.log(rule.status) // Kueri status aturan. 
      console.log(rule.tags) // Kueri tag yang dikonfigurasi dalam aturan siklus hidup. 
      console.log(rule.expiration.days) // Kueri konfigurasi periode validitas. 
      console.log(rule.expiration.createdBeforeDate) // Kueri konfigurasi tanggal kedaluwarsa. 
      // Kueri aturan untuk bagian yang kedaluwarsa. 
      console.log(rule.abortMultipartUpload.days || rule.abortMultipartUpload.createdBeforeDate)
      // Kueri aturan konversi kelas penyimpanan. 
      console.log(rule.transition.days || rule.transition.createdBeforeDate) // Kueri konfigurasi tanggal konversi. 
      console.log(rule.transition.storageClass) // Kueri konfigurasi yang digunakan untuk mengonversi kelas penyimpanan. 
      // Kueri aturan siklus hidup untuk memeriksa apakah penanda hapus yang kedaluwarsa dihapus secara otomatis. 
      console.log(rule.transition.expiredObjectDeleteMarker)
      // Kueri konfigurasi yang digunakan untuk mengonversi kelas penyimpanan versi sebelumnya objek. 
      console.log(rule.noncurrentVersionTransition.noncurrentDays) // Kueri konfigurasi tanggal konversi untuk objek versi sebelumnya. 
      console.log(rule.noncurrentVersionTransition.storageClass) // Kueri konfigurasi yang digunakan untuk mengonversi kelas penyimpanan versi sebelumnya objek. 
    })
  } catch (e) {
    console.log(e);
  }
}
getBucketLifecycle();

Python

# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
import datetime
from oss2.models import (LifecycleExpiration, LifecycleRule,
                        BucketLifecycle, AbortMultipartUpload,
                        TaggingRule, Tagging, StorageTransition,
                        NoncurrentVersionStorageTransition,
                        NoncurrentVersionExpiration)

# Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# Tentukan endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint ke https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Tentukan informasi wilayah yang sesuai dengan endpoint, misalnya cn-hangzhou. Perhatikan bahwa parameter ini diperlukan untuk tanda tangan V4.
region = "cn-hangzhou"

# Ganti examplebucket dengan nama bucket yang sebenarnya.
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)

# Atur objek agar kedaluwarsa 3 hari setelah waktu modifikasi terakhirnya.
rule1 = LifecycleRule('rule1', 'tests/',
                      status=LifecycleRule.ENABLED,
                      expiration=LifecycleExpiration(days=3))

# Atur aturan kedaluwarsa objek. Objek yang dibuat sebelum tanggal yang ditentukan akan kedaluwarsa.
rule2 = LifecycleRule('rule2', 'tests2/',
                      status=LifecycleRule.ENABLED,
expiration = LifecycleExpiration(created_before_date=datetime.date(2023, 12, 12)))

# Atur aturan kedaluwarsa bagian. Bagian akan kedaluwarsa setelah 3 hari.
rule3 = LifecycleRule('rule3', 'tests3/',
                      status=LifecycleRule.ENABLED,
            abort_multipart_upload=AbortMultipartUpload(days=3))

# Atur aturan kedaluwarsa bagian. Bagian yang dibuat sebelum tanggal yang ditentukan akan kedaluwarsa.
rule4 = LifecycleRule('rule4', 'tests4/',
                      status=LifecycleRule.ENABLED,
                      abort_multipart_upload = AbortMultipartUpload(created_before_date=datetime.date(2022, 12, 12)))

# Atur aturan transisi kelas penyimpanan. Transisikan objek ke Infrequent Access (IA) 20 hari setelah waktu modifikasi terakhirnya. Transisikan ke Archive 30 hari setelah waktu modifikasi terakhirnya.
rule5 = LifecycleRule('rule5', 'tests5/',
                      status=LifecycleRule.ENABLED,
                      storage_transitions=[StorageTransition(days=20,storage_class=oss2.BUCKET_STORAGE_CLASS_IA),
                            StorageTransition(days=30,storage_class=oss2.BUCKET_STORAGE_CLASS_ARCHIVE)])

# Atur tag yang cocok.
tagging_rule = TaggingRule()
tagging_rule.add('key1', 'value1')
tagging_rule.add('key2', 'value2')
tagging = Tagging(tagging_rule)

# Atur aturan transisi kelas penyimpanan. Transisikan objek ke kelas penyimpanan Archive 365 hari setelah waktu modifikasi terakhirnya. 
# Berbeda dengan aturan sebelumnya, rule6 menentukan tag yang cocok. Hanya objek yang memiliki tag key1=value1 dan key2=value2 yang cocok dengan aturan ini.
rule6 = LifecycleRule('rule6', 'tests6/',
                      status=LifecycleRule.ENABLED,
                      storage_transitions=[StorageTransition(created_before_date=datetime.date(2022, 12, 12),storage_class=oss2.BUCKET_STORAGE_CLASS_IA)],
                      tagging = tagging)

# rule7 berlaku untuk bucket yang mengaktifkan versioning.
# Secara otomatis transisikan objek ke kelas penyimpanan Archive 365 hari setelah waktu modifikasi terakhirnya.
# Secara otomatis hapus penanda hapus yang kedaluwarsa.
# Transisikan versi non-saat ini objek ke kelas penyimpanan IA setelah 12 hari.
# Transisikan versi non-saat ini objek ke kelas penyimpanan Archive setelah 20 hari.
# Hapus versi non-saat ini objek setelah 30 hari.
rule7 = LifecycleRule('rule7', 'tests7/',
              status=LifecycleRule.ENABLED,
              storage_transitions=[StorageTransition(days=365, storage_class=oss2.BUCKET_STORAGE_CLASS_ARCHIVE)],
              expiration=LifecycleExpiration(expired_detete_marker=True),
              noncurrent_version_sotrage_transitions =
                    [NoncurrentVersionStorageTransition(12, oss2.BUCKET_STORAGE_CLASS_IA),
                     NoncurrentVersionStorageTransition(20, oss2.BUCKET_STORAGE_CLASS_ARCHIVE)],
              noncurrent_version_expiration = NoncurrentVersionExpiration(30))

lifecycle = BucketLifecycle([rule1, rule2, rule3, rule4, rule5, rule6, rule7])

bucket.put_bucket_lifecycle(lifecycle)

C#

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 ini, 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 instance ClientConfiguration dan ubah parameter default sesuai kebutuhan Anda.
var conf = new ClientConfiguration();

// Gunakan algoritma tanda tangan V4.
conf.SignatureVersion = SignatureVersion.V4;

// Buat instance OSSClient.
var client = new OssClient(endpoint, accessKeyId, accessKeySecret, conf);
client.SetRegion(region);
try
{
    var setBucketLifecycleRequest = new SetBucketLifecycleRequest(bucketName);
    // Buat aturan siklus hidup 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 siklus hidup 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 bagian kedaluwarsa 30 hari setelah terakhir dimodifikasi. 
    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 dikonversi ke IA 90 hari setelah terakhir dimodifikasi. 
        new LifecycleRule.LifeCycleNoncurrentVersionTransition(){
            StorageClass = StorageClass.IA,
            NoncurrentDays = 90
        },
        // Tentukan bahwa kelas penyimpanan versi sebelumnya objek dikonversi ke Archive 180 hari setelah terakhir dimodifikasi. 
        new LifecycleRule.LifeCycleNoncurrentVersionTransition(){
            StorageClass = StorageClass.Archive,
            NoncurrentDays = 180
        }
    };
    setBucketLifecycleRequest.AddLifecycleRule(lcr1);
    setBucketLifecycleRequest.AddLifecycleRule(lcr2);
    setBucketLifecycleRequest.AddLifecycleRule(lcr3);

    // Konfigurasikan aturan siklus hidup. 
    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);
}

Android-Java

PutBucketLifecycleRequest request = new PutBucketLifecycleRequest();
request.setBucketName("examplebucket");

BucketLifecycleRule rule1 = new BucketLifecycleRule();
// Atur ID aturan dan awalan file.
rule1.setIdentifier("1");
rule1.setPrefix("A");
// Tentukan apakah akan menjalankan aturan siklus hidup. Jika nilainya true, OSS secara berkala menjalankan aturan tersebut. Jika nilainya false, OSS mengabaikan aturan tersebut.
rule1.setStatus(true);
// Kedaluwarsa objek 200 hari setelah waktu modifikasi terakhirnya.
rule1.setDays("200");
// Transisikan objek ke kelas penyimpanan Archive setelah 30 hari.
rule1.setArchiveDays("30");
// Kedaluwarsa unggah multi-bagian yang belum lengkap setelah 3 hari.
rule1.setMultipartDays("3");
// Transisikan objek ke kelas penyimpanan Infrequent Access (IA) setelah 15 hari.
rule1.setIADays("15");

BucketLifecycleRule rule2 = new BucketLifecycleRule();
rule2.setIdentifier("2");
rule2.setPrefix("B");
rule2.setStatus(true);
rule2.setDays("300");
rule2.setArchiveDays("30");
rule2.setMultipartDays("3");
rule2.setIADays("15");

ArrayList<BucketLifecycleRule> lifecycleRules = new ArrayList<BucketLifecycleRule>();
lifecycleRules.add(rule1);
lifecycleRules.add(rule2);
request.setLifecycleRules(lifecycleRules);
OSSAsyncTask task = oss.asyncPutBucketLifecycle(request, new OSSCompletedCallback<PutBucketLifecycleRequest, PutBucketLifecycleResult>() {
    @Override
    public void onSuccess(PutBucketLifecycleRequest request, PutBucketLifecycleResult result) {
        OSSLog.logInfo("code::"+result.getStatusCode());

    }

    @Override
    public void onFailure(PutBucketLifecycleRequest request, ClientException clientException, ServiceException serviceException) {
        OSSLog.logError("error: "+serviceException.getRawMessage());

    }
});

task.waitUntilFinished();

Go

package main

import (
	"fmt"
	"os"

	"github.com/aliyun/aliyun-oss-go-sdk/oss"
)

func main() {
	// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
	provider, err := oss.NewEnvironmentVariableCredentialsProvider()
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}
	// Buat instance OSSClient.
	// Atur yourEndpoint ke Endpoint bucket. Misalnya, untuk wilayah China (Hangzhou), atur Endpoint ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, gunakan Endpoint yang sebenarnya.
	// Atur yourRegion ke wilayah tempat bucket berada. Misalnya, untuk wilayah China (Hangzhou), atur wilayah ke cn-hangzhou. Untuk wilayah lain, gunakan wilayah yang sebenarnya.
	clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
	clientOptions = append(clientOptions, oss.Region("yourRegion"))
	// Atur versi tanda tangan.
	clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4))
	client, err := oss.New("yourEndpoint", "", "", clientOptions...)
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}
	// Tentukan nama bucket.
	bucketName := "examplebucket"
	// Tentukan aturan siklus hidup 1. Aturan ini menentukan bahwa file dengan awalan "foo/" kedaluwarsa 3 hari setelah terakhir dimodifikasi.
	rule1 := oss.BuildLifecycleRuleByDays("rule1", "foo/", true, 3)

	// Secara otomatis hapus penanda hapus untuk objek di bucket yang mengaktifkan versioning ketika objek hanya memiliki penanda hapus.
	deleteMark := true
	expiration := oss.LifecycleExpiration{
		ExpiredObjectDeleteMarker: &deleteMark,
	}

	// Hapus versi non-saat ini objek 30 hari setelah menjadi non-saat ini.
	versionExpiration := oss.LifecycleVersionExpiration{
		NoncurrentDays: 30,
	}

	// Transisikan versi non-saat ini objek ke kelas penyimpanan Infrequent Access (IA) 10 hari setelah menjadi non-saat ini.
	versionTransition := oss.LifecycleVersionTransition{
		NoncurrentDays: 10,
		StorageClass:   "IA",
	}

	// Tentukan aturan siklus hidup 2.
	rule2 := oss.LifecycleRule{
		ID:                   "rule2",
		Prefix:               "yourObjectPrefix",
		Status:               "Enabled",
		Expiration:           &expiration,
		NonVersionExpiration: &versionExpiration,
		NonVersionTransitions: []oss.LifecycleVersionTransition{
			versionTransition,
		},
	}

	// Tentukan aturan siklus hidup 3. Aturan ini menentukan bahwa file dengan kunci tag "tag1" dan nilai tag "value1" kedaluwarsa 3 hari setelah terakhir dimodifikasi.
	rule3 := oss.LifecycleRule{
		ID:     "rule3",
		Prefix: "",
		Status: "Enabled",
		Tags: []oss.Tag{
			{
				Key:   "tag1",
				Value: "value1",
			},
		},
		Expiration: &oss.LifecycleExpiration{Days: 3},
	}

	// Atur aturan siklus hidup.
	rules := []oss.LifecycleRule{rule1, rule2, rule3}
	err = client.SetBucketLifecycle(bucketName, rules)
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}
}

C++

#include <alibabacloud/oss/OssClient.h>
using namespace AlibabaCloud::OSS;

int main(void)
{
    /* Inisialisasi informasi akun OSS. */
    
    /* Atur yourEndpoint ke Endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur Endpoint ke https://oss-cn-hangzhou.aliyuncs.com. */
    std::string Endpoint = "yourEndpoint";
    /* Atur yourRegion ke wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur Region ke cn-hangzhou. */
    std::string Region = "yourRegion";
    /* Tentukan nama bucket. Misalnya, examplebucket. */
    std::string BucketName = "examplebucket";

    /* Inisialisasi sumber daya jaringan. */
    InitializeSdk();

    ClientConfiguration conf;
    conf.signatureVersion = SignatureVersionType::V4;
    /* Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur. */
    auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
    OssClient client(Endpoint, credentialsProvider, conf);
    client.SetRegion(Region);

    SetBucketLifecycleRequest request(BucketName);
    std::string date("2022-10-12T00:00:00.000Z");

    /* Atur tag. */
    Tagging tagging;
    tagging.addTag(Tag("key1", "value1"));
    tagging.addTag(Tag("key2", "value2"));

    /* Tentukan aturan siklus hidup. */
    auto rule1 = LifecycleRule();
    rule1.setID("rule1");
    rule1.setPrefix("test1/");
    rule1.setStatus(RuleStatus::Enabled);
    rule1.setExpiration(3);
    rule1.setTags(tagging.Tags());

    /* Tentukan waktu kedaluwarsa. */
    auto rule2 = LifecycleRule();
    rule2.setID("rule2");
    rule2.setPrefix("test2/");
    rule2.setStatus(RuleStatus::Disabled);
    rule2.setExpiration(date);

    /* rule3 adalah aturan siklus hidup untuk bucket yang mengaktifkan versioning. */
    auto rule3 = LifecycleRule();
    rule3.setID("rule3");
    rule3.setPrefix("test3/");
    rule3.setStatus(RuleStatus::Disabled);

    /* Transisikan objek ke kelas penyimpanan Archive 365 hari setelah terakhir dimodifikasi. */  
    auto transition = LifeCycleTransition();  
    transition.Expiration().setDays(365);
    transition.setStorageClass(StorageClass::Archive);
    rule3.addTransition(transition);

    /* Secara otomatis hapus penanda hapus yang kedaluwarsa. */
    rule3.setExpiredObjectDeleteMarker(true);

    /* Transisikan versi non-saat ini objek ke kelas penyimpanan Infrequent Access 10 hari setelah menjadi non-saat ini. */
    auto transition1 = LifeCycleTransition();  
    transition1.Expiration().setDays(10);
    transition1.setStorageClass(StorageClass::IA);

    /* Transisikan versi non-saat ini objek ke kelas penyimpanan Archive 20 hari setelah menjadi non-saat ini. */
    auto transition2 = LifeCycleTransition();  
    transition2.Expiration().setDays(20);
    transition2.setStorageClass(StorageClass::Archive);

    /* Hapus objek 30 hari setelah menjadi versi non-saat ini. */
    auto expiration  = LifeCycleExpiration(30);
    rule3.setNoncurrentVersionExpiration(expiration);

    LifeCycleTransitionList noncurrentVersionStorageTransitions{transition1, transition2};
    rule3.setNoncurrentVersionTransitionList(noncurrentVersionStorageTransitions);

    /* Atur aturan siklus hidup. */
    LifecycleRuleList list{rule1, rule2, rule3};
    request.setLifecycleRules(list);
    auto outcome = client.SetBucketLifecycle(request);

    if (!outcome.isSuccess()) {
        /* Tangani pengecualian. */
        std::cout << "SetBucketLifecycle fail" <<
        ",code:" << outcome.error().Code() <<
        ",message:" << outcome.error().Message() <<
        ",requestId:" << outcome.error().RequestId() << std::endl;
        return -1;
    }

    /* Lepaskan sumber daya jaringan. */
    ShutdownSdk();
    return 0;
}

C

#include "oss_api.h"
#include "aos_http_io.h"
/* Ganti yourEndpoint dengan Endpoint wilayah tempat bucket Anda berada. Misalnya, untuk wilayah China (Hangzhou), Endpoint-nya adalah https://oss-cn-hangzhou.aliyuncs.com. */
const char *endpoint = "yourEndpoint";
/* Ganti dengan nama bucket Anda. Misalnya, examplebucket. */
const char *bucket_name = "examplebucket";
/* Ganti yourRegion dengan ID wilayah tempat bucket Anda berada. Misalnya, untuk wilayah China (Hangzhou), ID wilayahnya adalah cn-hangzhou. */
const char *region = "yourRegion";
void init_options(oss_request_options_t *options)
{
    options->config = oss_config_create(options->pool);
    /* Inisialisasi variabel aos_string_t dengan string char*. */
    aos_str_set(&options->config->endpoint, endpoint);
    /* Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur. */
    aos_str_set(&options->config->access_key_id, getenv("OSS_ACCESS_KEY_ID"));
    aos_str_set(&options->config->access_key_secret, getenv("OSS_ACCESS_KEY_SECRET"));
    // Anda juga harus mengonfigurasi dua parameter berikut.
    aos_str_set(&options->config->region, region);
    options->config->signature_version = 4;
    /* Tentukan apakah akan menggunakan CNAME untuk mengakses OSS. Nilai 0 berarti CNAME tidak digunakan. */
    options->config->is_cname = 0;
    /* Atur parameter jaringan, seperti periode timeout. */
    options->ctl = aos_http_controller_create(options->pool, 0);
}
int main(int argc, char *argv[])
{
    /* Panggil metode aos_http_io_initialize di titik masuk program untuk menginisialisasi sumber daya global, seperti jaringan dan memori. */
    if (aos_http_io_initialize(NULL, 0) != AOSE_OK) {
        exit(1);
    }
    /* Pool memori (pool) untuk manajemen memori setara dengan apr_pool_t. Implementasinya ada di pustaka apr. */
    aos_pool_t *pool;
    /* Buat pool memori. Parameter kedua adalah NULL, yang menunjukkan bahwa pool memori baru tidak mewarisi dari pool memori lain. */
    aos_pool_create(&pool, NULL);
    /* Buat dan inisialisasi opsi. Parameter ini mencakup konfigurasi global, seperti endpoint, access_key_id, access_key_secret, is_cname, dan curl. */
    oss_request_options_t *oss_client_options;
    /* Alokasikan memori untuk opsi di pool memori. */
    oss_client_options = oss_request_options_create(pool);
    /* Inisialisasi opsi klien, oss_client_options. */
    init_options(oss_client_options);
    /* Inisialisasi parameter. */
    aos_string_t bucket;
    aos_table_t *resp_headers = NULL; 
    aos_status_t *resp_status = NULL; 
    aos_str_set(&bucket, bucket_name);
    aos_list_t lifecycle_rule_list;   
    aos_str_set(&bucket, bucket_name);
    aos_list_init(&lifecycle_rule_list);
    /* Tentukan kedaluwarsa dalam hari. */
    oss_lifecycle_rule_content_t *rule_content_days = oss_create_lifecycle_rule_content(pool);
    aos_str_set(&rule_content_days->id, "rule-1");
    /* Atur awalan objek. */
    aos_str_set(&rule_content_days->prefix, "dir1");
    aos_str_set(&rule_content_days->status, "Enabled");
    rule_content_days->days = 3;
    aos_list_add_tail(&rule_content_days->node, &lifecycle_rule_list);
    /* Tentukan tanggal kedaluwarsa. */
    oss_lifecycle_rule_content_t *rule_content_date = oss_create_lifecycle_rule_content(pool);
    aos_str_set(&rule_content_date->id, "rule-2");
    aos_str_set(&rule_content_date->prefix, "dir2");
    aos_str_set(&rule_content_date->status, "Enabled");
    /* Tanggal kedaluwarsa harus dalam format UTC.
    aos_str_set(&rule_content_date->date, "2023-10-11T00:00:00.000Z");
    aos_list_add_tail(&rule_content_date->node, &lifecycle_rule_list);
    /* Atur aturan siklus hidup. */
    resp_status = oss_put_bucket_lifecycle(oss_client_options, &bucket, &lifecycle_rule_list, &resp_headers);
    if (aos_status_is_ok(resp_status)) {
        printf("put bucket lifecycle succeeded\n");
    } else {
        printf("put bucket lifecycle failed, code:%d, error_code:%s, error_msg:%s, request_id:%s\n",
            resp_status->code, resp_status->error_code, resp_status->error_msg, resp_status->req_id);
    }
    /* Lepaskan pool memori. Ini melepaskan memori yang dialokasikan untuk sumber daya selama permintaan. */
    aos_pool_destroy(pool);
    /* Lepaskan sumber daya global yang sebelumnya dialokasikan. */
    aos_http_io_deinitialize();
    return 0;
}

Ruby

require 'aliyun/oss'

client = Aliyun::OSS::Client.new(
  # Endpoint China (Hangzhou) digunakan sebagai contoh. Gantilah dengan Endpoint yang sebenarnya.
  endpoint: 'https://oss-cn-hangzhou.aliyuncs.com',
  # Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
  access_key_id: ENV['OSS_ACCESS_KEY_ID'],
  access_key_secret: ENV['OSS_ACCESS_KEY_SECRET']
)
# Tentukan nama bucket.
bucket = client.get_bucket('examplebucket')
# Atur aturan siklus hidup.
bucket.lifecycle = [
  Aliyun::OSS::LifeCycleRule.new(
    :id => 'rule1', :enable => true, :prefix => 'foo/', :expiry => 3),
  Aliyun::OSS::LifeCycleRule.new(
    :id => 'rule2', :enable => false, :prefix => 'bar/', :expiry => Date.new(2016, 1, 1))
]

Gunakan ossutil

Untuk informasi selengkapnya tentang cara mengatur aturan siklus hidup menggunakan ossutil, lihat put-bucket-lifecycle.

Gunakan REST API

Jika aplikasi Anda memiliki persyaratan khusus, Anda dapat mengirim permintaan REST API secara langsung. Untuk melakukan ini, Anda harus menulis kode secara manual untuk menghitung tanda tangan. Untuk informasi selengkapnya, lihat PutBucketLifecycle.

Mengonversi kelas penyimpanan objek secara manual menggunakan operasi CopyObject

Anda dapat memanggil operasi CopyObject untuk mengonversi kelas penyimpanan objek dengan menimpa objek tersebut.

  • Jika Anda mengonversi kelas penyimpanan objek ke IA, Archive, Cold Archive, atau Deep Cold Archive, ukuran tagihan minimum 64 KB, durasi penyimpanan minimum, dan biaya pengambilan data mungkin berlaku. Untuk informasi selengkapnya, lihat Catatan penggunaan.

  • Objek Archive, Cold Archive, dan Deep Cold Archive harus dipulihkan sebelum kelas penyimpanannya dapat diubah. Untuk informasi selengkapnya tentang cara memulihkan objek, lihat Restore objects. Jika akses waktu nyata untuk objek Arsip diaktifkan, Anda dapat mengubah kelas penyimpanan objek Arsip tanpa memulihkannya. Pembacaan langsung akan dikenakan biaya pengambilan data untuk akses waktu nyata. Untuk informasi selengkapnya, lihat Akses waktu nyata untuk objek Arsip.

Catatan
  • Di bucket yang mengaktifkan versioning, ketika Anda memanggil operasi CopyObject untuk mengonversi kelas penyimpanan objek, OSS secara otomatis menghasilkan ID versi unik untuk versi objek baru. ID versi ini dikembalikan dalam header respons x-oss-version-id.

  • Di bucket yang menonaktifkan atau menangguhkan versioning, ketika Anda memanggil operasi CopyObject untuk mengonversi kelas penyimpanan objek, OSS secara otomatis menghasilkan versi dengan ID versi null untuk objek baru dan menimpa versi yang ada dengan ID versi null. Jika objek yang ditimpa termasuk kelas penyimpanan IA, Archive, Cold Archive, atau Deep Cold Archive, Anda mungkin dikenakan biaya penyimpanan objek untuk durasi kurang dari durasi penyimpanan minimum. Untuk informasi selengkapnya, lihat Bagaimana saya dikenakan biaya untuk objek yang disimpan kurang dari durasi penyimpanan minimum?.

Aturan mengonversi kelas penyimpanan menggunakan CopyObject

  • LRS

    Anda dapat mengonversi objek LRS antara kelas penyimpanan berikut: Standard LRS, IA LRS, Archive LRS, Cold Archive LRS, dan Deep Cold Archive LRS.

  • Zone-Redundant Storage (ZRS)

    Anda dapat mengonversi objek ZRS antara kelas penyimpanan berikut: Standard ZRS, IA ZRS, dan Archive ZRS.

    Saat Anda mengonversi objek Archive ZRS ke objek Standard ZRS atau IA ZRS, operasi yang diperlukan berbeda berdasarkan pengaturan bucket:

    • Jika akses waktu nyata untuk objek Arsip diaktifkan untuk bucket, Anda dapat langsung mengonversi kelas penyimpanan objek Arsip tanpa memulihkannya.

    • Jika Akses waktu nyata untuk objek Arsip tidak diaktifkan pada bucket, Anda harus terlebih dahulu memulihkan objek Arsip sebelum mengonversi kelas penyimpanannya.

Metode mengonversi kelas penyimpanan menggunakan CopyObject

Setelah Anda mengaktifkan Prevent Object Overwrites, Anda tidak dapat memanggil operasi CopyObject untuk mengonversi kelas penyimpanan objek menggunakan klien seperti Konsol OSS, SDK, atau ossutil. Untuk mengonversi kelas penyimpanan, Anda harus menggunakan aturan siklus hidup untuk konversi otomatis.

Gunakan Konsol OSS

Saat Anda mengubah kelas penyimpanan objek di konsol, ukuran objek tidak boleh melebihi 1 GB. Untuk objek yang lebih besar dari 1 GB, kami sarankan Anda menggunakan SDK atau ossutil.

  1. Masuk ke OSS console.

  2. Klik Buckets, lalu klik nama bucket tujuan.

  3. Di panel navigasi kiri, pilih Object Management > Objects.

  4. Pada halaman Objects, temukan objek tujuan dan pilih more > Change Storage Class.

  5. Kami sarankan mengaktifkan sakelar Retain User Metadata untuk mempertahankan metadata kustom objek saat mengubah kelas penyimpanannya.

  6. Pilih kelas penyimpanan baru lalu klik OK.

Gunakan Alibaba Cloud SDKs

import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.CopyObjectRequest;
import com.aliyun.oss.model.CopyObjectResult;
import com.aliyun.oss.model.ObjectMetadata;
import com.aliyun.oss.model.StorageClass;

public class Demo {
    public static void main(String[] args) throws Exception {
        // Contoh berikut menggunakan endpoint wilayah China (Hangzhou). Gantilah endpoint dengan endpoint yang sebenarnya.
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Sebelum menjalankan contoh ini, buat bucket dan objek. Objek harus berada di kelas penyimpanan Standard atau Infrequent Access.
        // Tentukan nama bucket. Contoh: examplebucket.
        String bucketName = "examplebucket";
        // Tentukan path lengkap objek. Jangan sertakan nama bucket. Contoh: exampleobject.txt.
        String objectName = "exampleobject.txt";
        // Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou.
        String region = "cn-hangzhou";

        // Buat instance OSSClient.
        // Saat instance OSSClient tidak lagi diperlukan, panggil metode shutdown untuk melepaskan sumber daya.
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);        
        OSS ossClient = OSSClientBuilder.create()
        .endpoint(endpoint)
        .credentialsProvider(credentialsProvider)
        .clientConfiguration(clientBuilderConfiguration)
        .region(region)               
        .build();

        try {
            // Buat objek CopyObjectRequest.
            CopyObjectRequest request = new CopyObjectRequest(bucketName, objectName, bucketName, objectName) ;

            // Buat objek ObjectMetadata.
            ObjectMetadata objectMetadata = new ObjectMetadata();

            // Konversi kelas penyimpanan objek ke Archive.
            objectMetadata.setHeader("x-oss-storage-class", StorageClass.Archive);
            // Konversi kelas penyimpanan objek ke Cold Archive.
            // objectMetadata.setHeader("x-oss-storage-class", StorageClass.ColdArchive);
            // Konversi kelas penyimpanan objek ke Deep Cold Archive.
            // objectMetadata.setHeader("x-oss-storage-class", StorageClass.DeepColdArchive);
            request.setNewObjectMetadata(objectMetadata);

            // Ubah kelas penyimpanan objek.
            CopyObjectResult result = ossClient.copyObject(request);
        } catch (OSSException oe) {
            System.out.println("Caught an OSSException, which means your request made it to OSS, "
                    + "but was rejected with an error response for some reason.");
            System.out.println("Error Message:" + oe.getErrorMessage());
            System.out.println("Error Code:" + oe.getErrorCode());
            System.out.println("Request ID:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Caught an ClientException, which means the client encountered "
                    + "a serious internal problem while trying to communicate with OSS, "
                    + "such as not being able to access the network.");
            System.out.println("Error Message:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}
<?php
if (is_file(__DIR__ . '/../autoload.php')) {
    require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
    require_once __DIR__ . '/../vendor/autoload.php';
}

use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;
use OSS\CoreOssException;

// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
$provider = new EnvironmentVariableCredentialsProvider();
// Endpoint wilayah China (Hangzhou) digunakan dalam contoh ini. Tentukan endpoint yang sebenarnya.
$endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Tentukan nama bucket.
$bucket= "<yourBucketName>";
// Tentukan path lengkap objek. Jangan sertakan nama bucket. Contoh: destfolder/exampleobject.txt.
$object = "<yourObjectName>";

$config = array(
        "provider" => $provider,
        "endpoint" => $endpoint,
        "signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
        "region"=> "cn-hangzhou"
    );
    $ossClient = new OssClient($config);

try {

    // Tentukan kelas penyimpanan untuk objek setelah perubahan. Misalnya, atur kelas penyimpanan ke Archive.
    $copyOptions = array(
        OssClient::OSS_HEADERS => array(            
            'x-oss-storage-class' => 'Archive',
            'x-oss-metadata-directive' => 'REPLACE',
        ),
    );
    
    $ossClient->copyObject($bucket, $object, $bucket, $object, $copyOptions);

} catch (OssException $e) {
    printf(__FUNCTION__ . ": FAILED\n");
    printf($e->getMessage() . "\n");
    return;
}

print(__FUNCTION__ . ": OK" . "\n");
const OSS = require('ali-oss');

const client = new OSS({
  // Atur region ke wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur region ke oss-cn-hangzhou.
  region: 'yourregion',
  // Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
  accessKeyId: process.env.OSS_ACCESS_KEY_ID,
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
  authorizationV4: true,
  // Atur bucket ke nama bucket Anda.
  bucket: 'yourbucketname'
})
const options = {
    headers:{'x-oss-storage-class':'Archive'}
}
client.copy('Objectname','Objectname',options).then((res) => {
    console.log(res);
}).catch(err => {
    console.log(err)
})
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
import os
# Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. 
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# Tentukan endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint ke https://oss-cn-hangzhou.aliyuncs.com. 
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"

# Tentukan ID wilayah yang memetakan ke endpoint. Contoh: cn-hangzhou. Parameter ini diperlukan jika Anda menggunakan algoritma tanda tangan V4.
region = "cn-hangzhou"

# Tentukan nama bucket Anda.
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)

# Tentukan path lengkap objek. Jangan sertakan nama bucket dalam path lengkap. Contoh: exampledir/exampleobject.txt. 
# Pastikan kelas penyimpanan objek adalah Standard atau IA. 
object_name = 'exampledir/exampleobject.txt'

# Konversi kelas penyimpanan objek ke Archive dengan mengatur header x-oss-storage-class ke oss2.BUCKET_STORAGE_CLASS_ARCHIVE. 
headers = {'x-oss-storage-class': oss2.BUCKET_STORAGE_CLASS_ARCHIVE}
# Konversi kelas penyimpanan objek ke Cold Archive dengan mengatur header x-oss-storage-class ke oss2.BUCKET_STORAGE_CLASS_COLD_ARCHIVE. 
# headers = {'x-oss-storage-class': oss2.BUCKET_STORAGE_CLASS_COLD_ARCHIVE}
# Konversi kelas penyimpanan objek ke Deep Cold Archive dengan mengatur header x-oss-storage-class ke BUCKET_STORAGE_CLASS_DEEP_COLD_ARCHIVE 
# headers = {'x-oss-storage-class': oss2.models.BUCKET_STORAGE_CLASS_DEEP_COLD_ARCHIVE}
# Konversi kelas penyimpanan objek. 
bucket.copy_object(bucket.bucket_name, object_name, object_name, headers)                    
package main

import (
	"log"

	"github.com/aliyun/aliyun-oss-go-sdk/oss"
)

func main() {
	// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
	provider, err := oss.NewEnvironmentVariableCredentialsProvider()
	if err != nil {
		log.Fatalf("Failed to create credentials provider: %v", err)
	}

	// Buat instance OSSClient.
	// Atur yourEndpoint ke Endpoint bucket. Misalnya, untuk wilayah China (Hangzhou), atur Endpoint ke https://oss-cn-hangzhou.aliyuncs.com. Untuk wilayah lain, gunakan Endpoint yang sebenarnya.
	// Atur yourRegion ke wilayah tempat bucket berada. Misalnya, untuk wilayah China (Hangzhou), atur wilayah ke cn-hangzhou. Untuk wilayah lain, gunakan wilayah yang sebenarnya.
	clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
	clientOptions = append(clientOptions, oss.Region("yourRegion"))
	// Atur versi tanda tangan.
	clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4))
	client, err := oss.New("yourEndpoint", "", "", clientOptions...)
	if err != nil {
		log.Fatalf("Failed to create OSS client: %v", err)
	}

	// Atur yourBucketName ke nama bucket.
	bucketName := "yourBucketName" // Ganti dengan nama bucket yang sebenarnya.
	// Atur yourObjectName ke path lengkap objek. Jangan sertakan nama bucket.
	objectName := "yourObjectName" // Ganti dengan path objek yang sebenarnya.

	bucket, err := client.Bucket(bucketName)
	if err != nil {
		log.Fatalf("Failed to get bucket: %v", err)
	}

	// Ubah kelas penyimpanan objek. Misalnya, ubah ke Archive.
	_, err = bucket.CopyObject(objectName, objectName, oss.ObjectStorageClass(oss.StorageArchive))
	if err != nil {
		log.Fatalf("Failed to change storage class of object: %v", err)
	}

	log.Println("Storage class changed successfully.")
}
OSSCopyObjectRequest * copy = [OSSCopyObjectRequest new];
copy.sourceBucketName = @"examplebucket";
copy.sourceObjectKey = @"exampleobject.txt";
copy.bucketName = @"examplebucket";
copy.objectKey = @"exampleobject.txt";
// Atur kelas penyimpanan objek exampleobject.txt ke Archive. 
copy.objectMeta = @{@"x-oss-storage-class" : @"Archive"};

OSSTask * task = [client copyObject:copy];
[task continueWithBlock:^id(OSSTask *task) {
    if (!task.error) {
        NSLog(@"copy object success!");
    } else {
        NSLog(@"copy object failed, error: %@" , task.error);
    }
    return nil;
}];
// Implementasikan pemblokiran sinkron untuk menunggu tugas selesai. 
// [task waitUntilFinished];  
#include <iostream>
#include <alibabacloud/oss/OssClient.h>

using namespace AlibabaCloud::OSS;

int main(void)
{  
            
    /* Atur yourEndpoint ke Endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur Endpoint ke https://oss-cn-hangzhou.aliyuncs.com. */
    std::string Endpoint = "yourEndpoint";
    /* Atur yourRegion ke wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur Region ke cn-hangzhou. */
    std::string Region = "yourRegion";
    /* Tentukan nama bucket. Contoh: examplebucket. */
    std::string BucketName = "examplebucket";
    /* Tentukan path lengkap objek. Path lengkap tidak boleh mengandung nama bucket. Contoh: exampledir/exampleobject.txt. */
    std::string ObjectName = "exampledir/exampleobject.txt";
  
    /* Inisialisasi sumber daya jaringan. */
    InitializeSdk();
    ClientConfiguration conf;
    conf.signatureVersion = SignatureVersionType::V4;
    /* Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur. */
    auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
    OssClient client(Endpoint, credentialsProvider, conf);
    client.SetRegion(Region);
    
    /* Atur kelas penyimpanan untuk objek. Misalnya, atur kelas penyimpanan ke Archive. */
    ObjectMetaData objectMeta;
    objectMeta.addHeader("x-oss-storage-class", "Archive");
    
    std::string SourceBucketName = BucketName;
    std::string SourceObjectName = ObjectName;
    
    CopyObjectRequest request(SourceBucketName, ObjectName, objectMeta);
    request.setCopySource(SourceBucketName, SourceObjectName);
    
    /* Ubah kelas penyimpanan ke yang ditentukan. */
    auto outcome = client.CopyObject(request);
    if (!outcome.isSuccess()) {
        /* Tangani pengecualian. */
        std::cout << "CopyObject fail" <<
        ",code:" << outcome.error().Code() <<
        ",message:" << outcome.error().Message() <<
        ",requestId:" << outcome.error().RequestId() << std::endl;
        return -1;
    }
    
    /* Lepaskan sumber daya jaringan. */
    ShutdownSdk();
    return 0;
}

Gunakan ossutil

Untuk informasi selengkapnya tentang cara mengonversi kelas penyimpanan objek menggunakan ossutil, lihat copy-object.

Gunakan REST API

Jika aplikasi Anda memiliki persyaratan khusus, Anda dapat mengirim permintaan REST API secara langsung. Untuk melakukan ini, Anda harus menulis kode secara manual untuk menghitung tanda tangan. Untuk informasi selengkapnya, lihat CopyObject.

Catatan penggunaan

Saat Anda mengonversi kelas penyimpanan objek ke IA, Archive, Cold Archive, atau Deep Cold Archive, perhatikan hal-hal berikut:

Ukuran tagihan minimum

Ukuran tagihan minimum objek adalah 64 KB. Jika objek lebih kecil dari 64 KB, Anda dikenakan biaya untuk penyimpanan 64 KB.

Durasi penyimpanan minimum

Durasi penyimpanan minimum adalah 30 hari untuk objek IA, 60 hari untuk objek Archive, 180 hari untuk objek Cold Archive, dan 180 hari untuk objek Deep Cold Archive. Jika objek disimpan untuk periode lebih pendek dari durasi penyimpanan minimum, Anda dikenakan biaya penyimpanan objek untuk durasi kurang dari durasi penyimpanan minimum. Untuk informasi selengkapnya, lihat Biaya penyimpanan.

  • Mengonversi kelas penyimpanan objek secara otomatis menggunakan aturan siklus hidup

    • Saat Anda mengonversi kelas penyimpanan objek ke IA atau Archive, durasi penyimpanan objek tidak dihitung ulang.

      Misalnya, objek bernama a.txt disimpan sebagai objek Standard di OSS selama 10 hari. Setelah kelas penyimpanannya dikonversi ke IA oleh aturan siklus hidup, objek tersebut hanya perlu disimpan selama 20 hari lagi untuk memenuhi persyaratan durasi penyimpanan minimum 30 hari.

    • Saat Anda mengonversi kelas penyimpanan objek ke Cold Archive atau Deep Cold Archive, durasi penyimpanan objek dihitung ulang.

      • Contoh 1: Objek bernama a.txt disimpan sebagai objek Standard atau IA di OSS selama 10 hari. Setelah kelas penyimpanannya dikonversi ke Cold Archive atau Deep Cold Archive oleh aturan siklus hidup, objek tersebut harus disimpan selama 180 hari lagi untuk memenuhi persyaratan durasi penyimpanan minimum 180 hari.

      • Contoh 2: Objek bernama a.txt disimpan sebagai objek Cold Archive di OSS selama 30 hari. Saat kelas penyimpanannya dikonversi ke Deep Cold Archive oleh aturan siklus hidup, Anda dikenakan biaya untuk menyimpan objek Cold Archive kurang dari durasi minimum 180 hari. Selain itu, setelah dikonversi ke Deep Cold Archive, objek tersebut harus disimpan selama 180 hari lagi untuk memenuhi persyaratan durasi penyimpanan minimum 180 hari.

  • Mengonversi kelas penyimpanan objek secara manual menggunakan operasi CopyObject

    Saat Anda mengonversi objek secara manual ke kelas penyimpanan apa pun menggunakan operasi CopyObject, durasi penyimpanan objek dihitung ulang.

    Misalnya, objek bernama a.txt disimpan sebagai objek Standard di OSS selama 10 hari. Setelah Anda mengonversi objek tersebut secara manual ke kelas penyimpanan IA menggunakan operasi CopyObject, objek tersebut harus disimpan selama 30 hari lagi untuk memenuhi persyaratan durasi penyimpanan minimum 30 hari.

Catatan

Jika Anda mengganti nama objek IA, Archive, Cold Archive, atau Deep Cold Archive atau menimpanya dengan mengunggah objek dengan nama yang sama sebelum durasi penyimpanan minimum berakhir, Anda dikenakan biaya penyimpanan objek untuk durasi kurang dari durasi penyimpanan minimum. Misalnya, jika Anda mengganti nama objek IA setelah disimpan selama 29 hari, OSS memperlakukan objek yang diganti namanya sebagai objek baru dan mengatur ulang durasi penyimpanannya. Artinya, objek tersebut harus disimpan selama 30 hari lagi untuk memenuhi persyaratan durasi penyimpanan minimum untuk kelas penyimpanan IA.

Waktu pemulihan

Memulihkan objek Archive, Cold Archive, atau Deep Cold Archive memerlukan waktu. Jika skenario bisnis Anda memerlukan akses waktu nyata ke objek, kami sarankan agar Anda tidak mengonversi kelas penyimpanan objek ke Archive, Cold Archive, atau Deep Cold Archive.

Biaya permintaan

Metode konversi

Kelas penyimpanan sumber objek

Biaya permintaan

Aturan siklus hidup

Standard, IA, Archive, Cold Archive

Anda dikenakan biaya untuk permintaan PUT berdasarkan kelas penyimpanan sumber objek. Biaya ditagihkan ke bucket saat ini.

CopyObject

Archive Storage

  • Akses waktu nyata untuk objek Arsip diaktifkan

    • Anda dikenakan biaya untuk permintaan GET berdasarkan kelas penyimpanan sumber objek. Biaya ditagihkan ke bucket sumber.

    • Anda dikenakan biaya untuk permintaan PUT berdasarkan kelas penyimpanan tujuan objek. Biaya ditagihkan ke bucket tujuan.

  • Akses waktu nyata untuk objek Arsip tidak diaktifkan

    Anda dikenakan biaya untuk permintaan PUT berdasarkan kelas penyimpanan sumber objek. Biaya ditagihkan ke bucket tujuan.

Standard, IA, Cold Archive, Deep Cold Archive

Anda dikenakan biaya untuk permintaan PUT berdasarkan kelas penyimpanan sumber objek. Biaya ditagihkan ke bucket tujuan.

Jika akses waktu nyata untuk objek Arsip diaktifkan, saat Anda menggunakan operasi CopyObject untuk mengonversi kelas penyimpanan objek Arsip sumber, Anda tidak perlu memulihkannya terlebih dahulu. Anda tidak dikenakan biaya pemulihan data dari Archive Storage, tetapi dikenakan biaya pengambilan data untuk akses waktu nyata.

Jika akses waktu nyata untuk objek Arsip tidak diaktifkan, saat Anda menggunakan operasi CopyObject untuk mengonversi kelas penyimpanan objek Arsip sumber, Anda harus memulihkannya terlebih dahulu. Anda dikenakan biaya pemulihan data dari Archive Storage, tetapi tidak dikenakan biaya pengambilan data untuk akses waktu nyata.

Untuk informasi selengkapnya, lihat Biaya pemrosesan data.

Biaya pengambilan data

Saat Anda mengakses objek IA, Anda dikenakan biaya pengambilan data tambahan berdasarkan jumlah data yang diakses. Saat Anda memulihkan objek Archive, Cold Archive, dan Deep Cold Archive, Anda dikenakan biaya pemulihan data tambahan. Setelah Anda mengaktifkan akses waktu nyata untuk objek Arsip, Anda dikenakan biaya tambahan untuk akses waktu nyata saat mengakses objek Arsip secara langsung. Biaya ini ditagihkan secara terpisah dari biaya lalu lintas keluar. Jika objek diakses lebih dari sekali per bulan rata-rata, biaya menggunakan kelas penyimpanan IA, Archive, Cold Archive, atau Deep Cold Archive mungkin lebih tinggi daripada kelas penyimpanan Standard.

Biaya penyimpanan sementara

Saat objek Cold Archive atau Deep Cold Archive dipulihkan, replika Standard objek tersebut dibuat untuk diakses. Anda dikenakan biaya penyimpanan sementara untuk replika ini dengan tarif penyimpanan kelas Standard selama periode pemulihan.

FAQ

Dapatkah saya menggunakan aturan siklus hidup berdasarkan waktu modifikasi terakhir untuk mengonversi kelas penyimpanan objek dari Infrequent Access ke Standard?

Tidak, Anda tidak dapat melakukannya. Anda dapat menggunakan salah satu metode berikut untuk mengonversi kelas penyimpanan objek dari IA ke Standard: