全部产品
Search
文档中心

Object Storage Service:Mengonversi kelas penyimpanan objek

更新时间:Aug 01, 2025

Object Storage Service (OSS) menyediakan beberapa kelas penyimpanan berikut: Standar, Infrequent Access (IA), Arsip, Arsip Dingin, dan Deep Cold Archive. Anda dapat mengonversi kelas penyimpanan objek secara otomatis menggunakan aturan siklus hidup atau secara manual dengan memanggil operasi CopyObject.

Peringatan
  • Kami menyarankan agar Anda tidak mengubah kelas penyimpanan objek di direktori .dlsdata/ dari bucket tempat OSS-HDFS diaktifkan.

  • Jika Anda mengubah kelas penyimpanan objek di direktori .dlsdata/ menjadi Infrequent Access (IA), objek tetap dapat diakses melalui OSS-HDFS. Namun, jika Anda mengubahnya menjadi Arsip, Arsip Dingin, atau Deep Cold Archive, objek tersebut tidak dapat langsung diakses melalui OSS-HDFS. Anda harus memulihkannya terlebih dahulu sebelum dapat mengaksesnya.

Konfigurasikan aturan siklus hidup untuk mengonversi kelas penyimpanan objek secara otomatis

Konversi kelas penyimpanan berdasarkan waktu modifikasi terakhir objek

  • LRS本地冗余

    Kelas penyimpanan objek LRS (Penyimpanan Redundansi Lokal) dapat dikonversi berdasarkan aturan berikut:

    • Dari Standar LRS ke IA LRS, Arsip LRS, Arsip Dingin LRS, atau Deep Cold Archive LRS

    • Dari IA LRS ke Arsip LRS, Arsip Dingin LRS, atau Deep Cold Archive LRS

    • Dari Arsip LRS ke Arsip Dingin LRS atau Deep Cold Archive LRS

    • Dari Arsip Dingin LRS ke Deep Cold Archive LRS

    Jika kebijakan berbeda dikonfigurasi untuk bucket pada saat yang sama untuk mengonversi kelas penyimpanan objek ke IA, Arsip, Arsip Dingin, dan Deep Cold Archive, periode waktu yang ditentukan dalam kebijakan harus memenuhi persyaratan berikut:

    Periode waktu untuk konversi ke IA < Periode waktu untuk konversi ke Arsip < Periode waktu untuk konversi ke Arsip Dingin < Periode waktu untuk konversi ke Deep Cold Archive

  • ZRS同城

    Kelas penyimpanan objek ZRS (Penyimpanan Redundansi Zona) dapat dikonversi berdasarkan aturan berikut:

    • Dari Standar ZRS ke IA ZRS, Arsip ZRS, Arsip Dingin LRS, atau Deep Cold Archive LRS

    • Dari IA ZRS ke Arsip ZRS, Arsip Dingin LRS, atau Deep Cold Archive LRS

    • Dari Arsip ZRS ke Arsip Dingin LRS atau Deep Cold Archive LRS

    • Dari Arsip Dingin LRS ke Deep Cold Archive LRS

Untuk informasi lebih lanjut, lihat Aturan Siklus Hidup Berdasarkan Waktu Modifikasi Terakhir.

Konversi kelas penyimpanan berdasarkan waktu akses terakhir objek

Penting

Jika Anda ingin mengonversi kelas penyimpanan objek dari Standar atau IA ke Arsip, Arsip Dingin, atau Deep Cold Archive, ajukan tiket untuk mendapatkan izin yang diperlukan terlebih dahulu. Setelah aplikasi disetujui, Anda harus menentukan kelas penyimpanan tujuan untuk konversi.

Setelah aplikasi disetujui, jika Anda menggunakan aturan siklus hidup berdasarkan waktu akses terakhir untuk mengonversi kelas penyimpanan objek dari Standar atau IA ke Arsip, Arsip Dingin, atau Deep Cold Archive, waktu akses terakhir objek Arsip, Arsip Dingin, atau Deep Cold Archive adalah waktu ketika pelacakan akses diaktifkan untuk bucket tempat objek disimpan.

  • LRS

    1.jpg

    Kelas penyimpanan objek LRS dapat dikonversi berdasarkan aturan berikut:

    • Dari Standar LRS ke IA LRS, Arsip LRS, Arsip Dingin LRS, atau Deep Cold Archive LRS

    • Dari Standar LRS ke IA LRS dan konversi atau tanpa konversi dari IA LRS ke Standar LRS setelah objek diakses

    • Dari IA LRS ke Arsip LRS, Arsip Dingin LRS, atau Deep Cold Archive LRS

    • Dari Arsip LRS ke Arsip Dingin LRS atau Deep Cold Archive LRS

    • Dari Arsip Dingin LRS ke Deep Cold Archive LRS

  • ZRS

    2.jpg

    Kelas penyimpanan objek ZRS dapat dikonversi berdasarkan aturan berikut:

    • Dari Standar ZRS ke IA ZRS, Arsip ZRS, Arsip Dingin LRS, atau Deep Cold Archive LRS

    • Dari Standar ZRS ke IA ZRS dan konversi atau tanpa konversi dari IA ZRS ke Standar ZRS setelah objek diakses

    • Dari IA ZRS ke Arsip ZRS, Arsip Dingin LRS, atau Deep Cold Archive LRS

    • Dari Arsip ZRS ke Arsip Dingin LRS atau Deep Cold Archive LRS

    • Dari Arsip Dingin LRS ke Deep Cold Archive LRS

Untuk informasi lebih lanjut, lihat Aturan Siklus Hidup Berdasarkan Waktu Akses Terakhir.

Konfigurasikan aturan siklus hidup untuk mengonversi kelas penyimpanan objek

Anda dapat menggunakan beberapa metode untuk mengonfigurasi aturan siklus hidup. Berdasarkan aturan siklus hidup yang Anda konfigurasi, OSS akan mengonversi kelas penyimpanan beberapa objek ke kelas penyimpanan tertentu atau menghapus objek dan bagian setelah periode waktu yang ditentukan berakhir. Berikut ini adalah prosedur untuk mengonversi kelas penyimpanan objek ke kelas penyimpanan tertentu melalui aturan siklus hidup:

Gunakan Konsol OSS

  1. Masuk ke Konsol OSS.

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

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

  4. Opsi. Untuk membuat aturan siklus hidup berdasarkan waktu akses terakhir objek, aktifkan Enable Access Tracking pada halaman Lifecycle.

  5. Pada halaman Lifecycle, klik Create Rule.

  6. Di panel Create Rule, konfigurasikan parameter. Tabel berikut menjelaskan parameter.

    • Bucket tanpa versi

      Seksi

      Parameter

      Deskripsi

      Basic Settings

      Status

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

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

      • Setelah Anda menonaktifkan aturan siklus hidup, tugas siklus hidup dari aturan siklus hidup terganggu.

      Applied To

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

      Catatan

      Jika Anda memilih Objek dengan Awalan Tertentu, Anda harus menentukan awalan lengkap. Misalnya, jika Anda ingin menerapkan aturan siklus hidup ke objek yang namanya mengandung awalan src/dir1, masukkan src/dir1. Jika Anda hanya memasukkan dir1, aturan siklus hidup tidak akan menghasilkan efek yang Anda inginkan.

      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 ada (Aturan 1) dan Anda ingin mengonfigurasi aturan siklus hidup lain (Aturan 2) yang berisi awalan yang tumpang tindih:

      • Aturan 1

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

      • Aturan 2

        Konversi kelas penyimpanan semua objek yang namanya mengandung awalan dir1/dir2/ di bucket ke IA 30 hari setelah objek terakhir dimodifikasi dan hapus objek 60 hari setelah mereka 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 Tumpang tindih untuk jenis tindakan yang sama Kadaluarsa..

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

      Catatan

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

      Prefix

      Tentukan awalan dalam nama objek yang ingin Anda terapkan 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.

      • 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.

      Tag

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

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

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

      Untuk informasi lebih lanjut, lihat Tag objek.

      NOT

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

      Penting
      • Jika Anda mengaktifkan NOT, setidaknya satu dari parameter Awalan dan Tag harus ditentukan untuk aturan siklus hidup.

      • 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.

      Object Size

      Tentukan ukuran objek yang ingin Anda terapkan aturan siklus hidup.

      • Minimum Size: Tentukan bahwa aturan siklus hidup berlaku hanya 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 berlaku hanya 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 maksimum dalam aturan siklus hidup yang sama, perhatikan item berikut:

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

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

      • 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, tentukan 24 September 2023 sebagai tanggal kedaluwarsa, dan tentukan Hapus Objek (Tidak Dapat Dipulihkan). Dalam hal ini, objek yang terakhir dimodifikasi sebelum 24 September 2023 secara otomatis dihapus 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 satu dari kebijakan kedaluwarsa objek dan kebijakan kedaluwarsa bagian.

      Rules for Parts

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

    • Bucket dengan versi

      Konfigurasikan parameter di bagian Basic Settings dan Policy for Parts seperti saat mengonfigurasi parameter untuk bucket tanpa versi. Tabel berikut hanya menjelaskan parameter yang berbeda dari parameter yang Anda konfigurasikan untuk bucket tanpa versi.

      Seksi

      Parameter

      Deskripsi

      Policy for Current Versions

      Removal of Delete Marker

      Jika bucket memiliki versi, opsi Removal of Delete Marker ditambahkan ke parameter Siklus Hidup Objek. Parameter lainnya sama dengan yang dapat Anda konfigurasikan untuk bucket tanpa versi.

      Jika Anda memilih Penghapusan Penanda Hapus, dan sebuah objek hanya memiliki satu versi, yang merupakan penanda hapus, OSS menganggap penanda hapus kedaluwarsa dan menghapus penanda hapus tersebut. Jika sebuah objek memiliki beberapa versi dan versi saat ini dari objek adalah penanda hapus, OSS mempertahankan penanda hapus tersebut. Untuk informasi lebih lanjut tentang penanda hapus, lihat Penanda Hapus.

      Penting

      Jika objek yang cocok memiliki versi sebelumnya, aturan siklus hidup tidak akan menghapus penanda hapus objek tersebut. Kami menyarankan Anda menghapus versi objek sebelumnya yang tidak lagi diperlukan dan penanda hapus untuk mencegah penurunan kinerja daftar karena 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 dilakukan pada versi sebelumnya keesokan harinya. Misalnya, jika Anda mengatur parameter Periode Validitas (Hari) menjadi 30, objek yang menjadi versi sebelumnya pada 1 September 2023 dipindahkan ke kelas penyimpanan yang ditentukan atau dihapus pada 1 Oktober 2023.

      Penting

      Anda dapat menentukan kapan sebuah objek menjadi versi sebelumnya berdasarkan waktu versi selanjutnya dibuat.

  7. Klik OK.

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

Gunakan OSS SDK

Kode contoh berikut memberikan contoh tentang cara mengonfigurasi aturan siklus hidup menggunakan OSS SDK untuk bahasa pemrograman umum. Untuk informasi lebih lanjut tentang cara mengonfigurasi aturan siklus hidup menggunakan OSS SDK untuk bahasa pemrograman lainnya, lihat Ikhtisar.

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 wilayah Tiongkok (Hangzhou) digunakan dalam contoh ini. Tentukan endpoint sebenarnya.
        String 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.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Tentukan nama bucket. Contoh: examplebucket.
        String bucketName = "examplebucket";
        // Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (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 yang cocok dengan aturan.
            String matchPrefix0 = "A0/";
            // Atur tag yang cocok dengan aturan.
            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/";

            // Hapus objek 3 hari setelah terakhir dimodifikasi.
            LifecycleRule rule = new LifecycleRule(ruleId0, matchPrefix0, LifecycleRule.RuleStatus.Enabled, 3);
            rule.setTags(matchTags0);
            request.AddLifecycleRule(rule);

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

            // Hapus 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);

            // Hapus bagian yang dibuat sebelum tanggal tertentu.
            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);

            // Ubah kelas penyimpanan objek menjadi Infrequent Access (IA) 10 hari setelah objek terakhir dimodifikasi, dan ubah kelas penyimpanan menjadi Archive Storage 30 hari setelah objek terakhir dimodifikasi.
            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);

            // Ubah kelas penyimpanan objek yang terakhir dimodifikasi sebelum 12 Oktober 2022 menjadi 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 memiliki pengendalian versi diaktifkan.
            rule = new LifecycleRule(ruleId6, matchPrefix6, LifecycleRule.RuleStatus.Enabled);
            // Secara otomatis mengubah objek menjadi objek arsip 365 hari setelah terakhir dimodifikasi.
            storageTransitions = new ArrayList<LifecycleRule.StorageTransition>();
            storageTransition = new LifecycleRule.StorageTransition();
            storageTransition.setStorageClass(StorageClass.Archive);
            storageTransition.setExpirationDays(365);
            storageTransitions.add(storageTransition);
            rule.setStorageTransition(storageTransitions);
            // Secara otomatis menghapus penanda hapus yang kedaluwarsa.
            rule.setExpiredDeleteMarker(true);
            // Mengubah kelas penyimpanan versi non-saat ini dari objek menjadi Infrequent Access 10 hari setelah objek terakhir dimodifikasi.
            LifecycleRule.NoncurrentVersionStorageTransition noncurrentVersionStorageTransition =
                    new LifecycleRule.NoncurrentVersionStorageTransition().withNoncurrentDays(10).withStrorageClass(StorageClass.IA);
            // Mengubah kelas penyimpanan versi non-saat ini dari objek menjadi Archive Storage 20 hari setelah objek terakhir dimodifikasi.
            LifecycleRule.NoncurrentVersionStorageTransition noncurrentVersionStorageTransition2 =
                    new LifecycleRule.NoncurrentVersionStorageTransition().withNoncurrentDays(20).withStrorageClass(StorageClass.Archive);
            // Menghapus versi non-saat ini dari 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);

            // Ajukan permintaan untuk menetapkan 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("Tangkap OSSException, yang berarti permintaan Anda sampai ke OSS, "
                    + "tetapi ditolak dengan respons kesalahan karena alasan tertentu.");
            System.out.println("Pesan Kesalahan:" + oe.getErrorMessage());
            System.out.println("Kode Kesalahan:" + oe.getErrorCode());
            System.out.println("ID Permintaan:" + oe.getRequestId());
            System.out.println("ID Host:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Tangkap ClientException, yang berarti klien mengalami "
                    + "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
                    + "seperti tidak dapat mengakses jaringan.");
            System.out.println("Pesan Kesalahan:" + 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 contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. 
$provider = new EnvironmentVariableCredentialsProvider();
// Dalam contoh ini, endpoint wilayah Tiongkok (Hangzhou) digunakan. Tentukan endpoint sebenarnya. 
$endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Tentukan nama bucket. 
$bucket= "examplebucket";

// Tentukan ID aturan dan awalan yang terkandung dalam nama objek yang cocok dengan aturan. 
$ruleId0 = "rule0";
$matchPrefix0 = "A0/";
$ruleId1 = "rule1";
$matchPrefix1 = "A1/";

$lifecycleConfig = new LifecycleConfig();
$actions = array();
// Tentukan bahwa objek kedaluwarsa tiga hari setelah terakhir dimodifikasi. 
$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();
// Tentukan bahwa objek yang dibuat sebelum tanggal tertentu kedaluwarsa. 
$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__ . ": GAGAL\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 Tiongkok (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. 

    rules.forEach(rule => {
      console.log(rule.id) // Kueri ID aturan.  
      console.log(rule.status) // Kueri status aturan. 
      console.log(rule.tags) // Kueri tag yang dikonfigurasikan 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 dari 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 dari 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, 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 Tiongkok (Hangzhou), atur endpoint ke https://oss-cn-hangzhou.aliyuncs.com. 
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Tentukan ID wilayah yang sesuai dengan endpoint. Contoh: cn-hangzhou. Parameter ini diperlukan jika Anda menggunakan algoritma tanda tangan V4.
region = "cn-hangzhou"

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

# Tentukan bahwa objek kedaluwarsa tiga hari setelah terakhir dimodifikasi. 
rule1 = LifecycleRule('rule1', 'tests/',
                      status=LifecycleRule.ENABLED,
                      expiration=LifecycleExpiration(days=3))

# Tentukan bahwa objek yang dibuat sebelum tanggal tertentu kedaluwarsa. 
rule2 = LifecycleRule('rule2', 'tests2/',
                      status=LifecycleRule.ENABLED,
expiration = LifecycleExpiration(created_before_date=datetime.date(2023, 12, 12)))

# Tentukan bahwa bagian kedaluwarsa tiga hari setelah terakhir dimodifikasi. 
rule3 = LifecycleRule('rule3', 'tests3/',
                      status=LifecycleRule.ENABLED,
            abort_multipart_upload=AbortMultipartUpload(days=3))

# Tentukan bahwa bagian yang dibuat sebelum tanggal tertentu kedaluwarsa. 
rule4 = LifecycleRule('rule4', 'tests4/',
                      status=LifecycleRule.ENABLED,
                      abort_multipart_upload = AbortMultipartUpload(created_before_date=datetime.date(2022, 12, 12)))

# Tentukan bahwa kelas penyimpanan objek diubah menjadi Infrequent Access (IA) 20 hari setelah terakhir dimodifikasi, dan menjadi Arsip 30 hari setelah terakhir dimodifikasi. 
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)])

# Tentukan tag yang ingin Anda cocokkan dengan aturan siklus hidup. 
tagging_rule = TaggingRule()
tagging_rule.add('key1', 'value1')
tagging_rule.add('key2', 'value2')
tagging = Tagging(tagging_rule)

# Tentukan bahwa kelas penyimpanan objek diubah menjadi Arsip 365 hari setelah terakhir dimodifikasi.  
# Dibandingkan dengan aturan sebelumnya, rule6 mencakup kondisi tag untuk mencocokkan objek. Aturan ini berlaku untuk objek yang konfigurasi tag-nya adalah key1=value1 dan key2=value2. 
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 adalah aturan siklus hidup yang berlaku untuk bucket yang memiliki pengendalian versi diaktifkan. 
# Tentukan bahwa kelas penyimpanan objek diubah menjadi Arsip 365 hari setelah terakhir dimodifikasi. 
# Tentukan bahwa penanda hapus dihapus secara otomatis saat kedaluwarsa. 
# Tentukan bahwa kelas penyimpanan objek diubah menjadi IA 12 hari setelah menjadi versi sebelumnya. 
# Tentukan bahwa kelas penyimpanan objek diubah menjadi Arsip 20 hari setelah menjadi versi sebelumnya. 
# Tentukan bahwa objek dihapus 30 hari setelah menjadi versi sebelumnya. 
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 Tiongkok (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 Tiongkok (Hangzhou), atur wilayah ke cn-hangzhou.
const string region = "cn-hangzhou";

// Buat instance ClientConfiguration dan modifikasi parameter default berdasarkan 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. 
    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. 
    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 dari objek diubah menjadi IA 90 hari setelah terakhir dimodifikasi. 
        new LifecycleRule.LifeCycleNoncurrentVersionTransition(){
            StorageClass = StorageClass.IA,
            NoncurrentDays = 90
        },
        // Tentukan bahwa kelas penyimpanan versi sebelumnya dari objek diubah menjadi Arsip 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 berhasil ", bucketName);
}
catch (OssException ex)
{
    Console.WriteLine("Gagal dengan kode kesalahan: {0}; Informasi kesalahan: {1}. \nRequestID:{2}\tHostID:{3}",
        ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
}
catch (Exception ex)
{
    Console.WriteLine("Gagal dengan informasi kesalahan: {0}", ex.Message);
}

Android-Java

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

BucketLifecycleRule rule1 = new BucketLifecycleRule();
// Tentukan ID aturan dan awalan yang terkandung dalam nama objek yang cocok dengan aturan. 
rule1.setIdentifier("1");
rule1.setPrefix("A");
// Tentukan apakah akan menjalankan aturan siklus hidup. Jika parameter ini disetel ke true, OSS secara berkala menjalankan aturan ini. Jika parameter ini disetel ke false, OSS mengabaikan aturan ini. 
rule1.setStatus(true);
// Tentukan bahwa objek kedaluwarsa 200 hari setelah terakhir dimodifikasi. 
rule1.setDays("200");
// Tentukan bahwa kelas penyimpanan objek diubah menjadi Arsip 30 hari setelah terakhir dimodifikasi.
rule1.setArchiveDays("30");
// Tentukan bahwa bagian kedaluwarsa tiga hari setelah gagal diunggah. 
rule1.setMultipartDays("3");
// Tentukan bahwa kelas penyimpanan objek diubah menjadi Infrequent Access (IA) 15 hari setelah terakhir dimodifikasi. 
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, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. 
	provider, err := oss.NewEnvironmentVariableCredentialsProvider()
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}
	// Buat instance OSSClient. 
	// Tentukan endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur endpoint ke https://oss-cn-hangzhou.aliyuncs.com. Tentukan endpoint sebenarnya. 
	// Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur wilayah ke cn-hangzhou. Tentukan wilayah sebenarnya.
	clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
	clientOptions = append(clientOptions, oss.Region("yourRegion"))
	// Tentukan versi algoritma 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"
	// Konfigurasikan aturan siklus hidup dan atur ID ke rule1. Tentukan bahwa objek yang namanya mengandung awalan foo dalam bucket kedaluwarsa tiga hari setelah objek terakhir dimodifikasi. 
	rule1 := oss.BuildLifecycleRuleByDays("rule1", "foo/", true, 3)

	// Jika objek dalam bucket yang memiliki pengendalian versi diaktifkan adalah penanda hapus dan tidak memiliki versi lain, penanda hapus dihapus. 
	deleteMark := true
	expiration := oss.LifecycleExpiration{
		ExpiredObjectDeleteMarker: &deleteMark,
	}

	// Tentukan bahwa versi sebelumnya dari objek dihapus 30 hari setelah terakhir dimodifikasi. 
	versionExpiration := oss.LifecycleVersionExpiration{
		NoncurrentDays: 30,
	}

	// Tentukan bahwa kelas penyimpanan versi sebelumnya dari objek diubah menjadi Infrequent Access (IA) 10 hari setelah terakhir dimodifikasi. 
	versionTransition := oss.LifecycleVersionTransition{
		NoncurrentDays: 10,
		StorageClass:   "IA",
	}

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

	// Konfigurasikan aturan siklus hidup dan atur ID ke rule3. Aturan ini berlaku untuk objek yang memiliki tag dengan kunci tag1 dan nilai value1. Objek ini kedaluwarsa tiga hari setelah terakhir dimodifikasi. 
	rule3 := oss.LifecycleRule{
		ID:     "rule3",
		Prefix: "",
		Status: "Enabled",
		Tags: []oss.Tag{
			oss.Tag{
				Key:   "tag1",
				Value: "value1",
			},
		},
		Expiration: &oss.LifecycleExpiration{Days: 3},
	}

	// Konfigurasikan 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 tentang akun yang digunakan untuk mengakses OSS. */
    
    /* Tentukan endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur endpoint ke https://oss-cn-hangzhou.aliyuncs.com. */
    std::string Endpoint = "yourEndpoint";
    /* Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur wilayah ke cn-hangzhou. */
    std::string Region = "yourRegion";
    /* Tentukan nama bucket. Contoh: examplebucket. */
    std::string BucketName = "examplebucket";

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

    ClientConfiguration conf;
    conf.signatureVersion = SignatureVersionType::V4;
    /* Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. */
    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");

    /* Tentukan tag objek yang ingin Anda cocokkan dengan aturan. */
    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 tanggal kedaluwarsa. */
    auto rule2 = LifecycleRule();
    rule2.setID("rule2");
    rule2.setPrefix("test2/");
    rule2.setStatus(RuleStatus::Disabled);
    rule2.setExpiration(date);

    /* Tentukan bahwa rule3 diaktifkan untuk bucket jika pengendalian versi diaktifkan untuk bucket. */
    auto rule3 = LifecycleRule();
    rule3.setID("rule3");
    rule3.setPrefix("test3/");
    rule3.setStatus(RuleStatus::Disabled);

    /* Tentukan bahwa kelas penyimpanan objek diubah menjadi Arsip 365 hari setelah terakhir dimodifikasi. */  
    auto transition = LifeCycleTransition();  
    transition.Expiration().setDays(365);
    transition.setStorageClass(StorageClass::Archive);
    rule3.addTransition(transition);

    /* Tentukan bahwa penanda hapus yang kedaluwarsa dihapus secara otomatis. */
    rule3.setExpiredObjectDeleteMarker(true);

    /* Tentukan bahwa kelas penyimpanan versi sebelumnya dari objek diubah menjadi IA 10 hari setelah terakhir dimodifikasi. */
    auto transition1 = LifeCycleTransition();  
    transition1.Expiration().setDays(10);
    transition1.setStorageClass(StorageClass::IA);

    /* Tentukan bahwa kelas penyimpanan versi sebelumnya dari objek diubah menjadi Arsip 20 hari setelah terakhir dimodifikasi. */
    auto transition2 = LifeCycleTransition();  
    transition2.Expiration().setDays(20);
    transition2.setStorageClass(StorageClass::Archive);

    /* Tentukan bahwa versi sebelumnya dihapus 30 hari setelah versi diperbarui. */
    auto expiration  = LifeCycleExpiration(30);
    rule3.setNoncurrentVersionExpiration(expiration);

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

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

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

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

C

#include <alibabacloud/oss/OssClient.h>
#include <aos_http_io.h>
/* Tentukan endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur endpoint ke https://oss-cn-hangzhou.aliyuncs.com. */
const char *endpoint = "yourEndpoint";
/* Tentukan nama bucket. Contoh: examplebucket. */
const char *bucket_name = "examplebucket";
/* Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah Tiongkok (Hangzhou), atur wilayah ke cn-hangzhou. */
const char *region = "yourRegion";
void init_options(oss_request_options_t *options)
{
    options->config = oss_config_create(options->pool);
    /* Gunakan string char* untuk menginisialisasi aos_string_t. */
    aos_str_set(&options->config->endpoint, endpoint);
    /* Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. */
    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"));
    // Tentukan dua parameter tambahan.
    aos_str_set(&options->config->region, region);
    options->config->signature_version = 4;
    /* Tentukan apakah menggunakan CNAME untuk mengakses OSS. Nilai 0 menunjukkan bahwa CNAME tidak digunakan. */
    options->config->is_cname = 0;
    /* Tentukan 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 main() untuk menginisialisasi sumber daya global, seperti sumber daya jaringan dan memori. */
    if (aos_http_io_initialize(NULL, 0) != AOSE_OK) {
        exit(1);
    }
    /* Buat kolam memori untuk mengelola memori. aos_pool_t setara dengan apr_pool_t. Kode yang digunakan untuk membuat kolam memori termasuk dalam pustaka APR. */
    aos_pool_t *pool;
    /* Buat kolam memori. Nilai parameter kedua adalah NULL. Nilai ini menunjukkan bahwa kolam tidak mewarisi kolam memori lain. */
    aos_pool_create(&pool, NULL);
    /* Buat dan inisialisasi opsi. Parameter ini mencakup informasi konfigurasi global seperti endpoint, access_key_id, access_key_secret, is_cname, dan curl. */
    oss_request_options_t *oss_client_options;
    /* Alokasikan sumber daya memori di kolam memori untuk opsi. */
    oss_client_options = oss_request_options_create(pool);
    /* Inisialisasi 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 periode validitas. */
    oss_lifecycle_rule_content_t *rule_content_days = oss_create_lifecycle_rule_content(pool);
    aos_str_set(&rule_content_days->id, "rule-1");
    /* Tentukan awalan yang terkandung dalam nama objek yang ingin Anda cocokkan dengan aturan. */
    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 ditampilkan dalam 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);
    /* Konfigurasikan 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 berhasil\n");
    } else {
        printf("put bucket lifecycle gagal, 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 kolam memori untuk melepaskan sumber daya memori yang dialokasikan untuk permintaan. */
    aos_pool_destroy(pool);
    /* Lepaskan sumber daya global yang dialokasikan. */
    aos_http_io_deinitialize();
    return 0;
}

Ruby

require 'aliyun/oss'

client = Aliyun::OSS::Client.new(
  # Dalam contoh ini, endpoint wilayah Tiongkok (Hangzhou) digunakan. Tentukan endpoint sebenarnya. 
  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. 
  access_key_id: ENV['OSS_ACCESS_KEY_ID'],
  access_key_secret: ENV['OSS_ACCESS_KEY_SECRET']
)
# Tentukan nama bucket. 
bucket = client.get_bucket('examplebucket')
# Konfigurasikan 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

Anda dapat mengonfigurasi aturan siklus hidup menggunakan ossutil. Untuk informasi lebih lanjut, lihat put-bucket-lifecycle.

Gunakan RESTful API

Jika bisnis Anda memerlukan tingkat penyesuaian yang tinggi, Anda dapat langsung memanggil RESTful API. Untuk langsung memanggil API, Anda harus menyertakan perhitungan tanda tangan dalam kode Anda. Untuk informasi lebih lanjut, lihat PutBucketLifecycle.

Panggil CopyObject untuk Mengonversi Kelas Penyimpanan Objek Secara Manual

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

  • Jika Anda mengonversi kelas penyimpanan objek ke IA, Arsip, Arsip Dingin, atau Deep Cold Archive, Anda akan dikenakan biaya penyimpanan berdasarkan ukuran objek dan durasi penyimpanan objek IA, atau biaya penyimpanan berdasarkan ukuran objek dan durasi penyimpanan serta biaya pengambilan data untuk objek Arsip, Arsip Dingin, atau Deep Cold Archive. Untuk informasi lebih lanjut, lihat bagian Catatan Penggunaan.

  • Untuk mengonversi kelas penyimpanan objek Arsip, Arsip Dingin, atau Deep Cold Archive, Anda harus terlebih dahulu memulihkan objek tersebut. Untuk informasi lebih lanjut tentang cara memulihkan objek, lihat Pulihkan Objek. Jika akses waktu nyata untuk objek Arsip diaktifkan untuk bucket, Anda dapat langsung mengonversi kelas penyimpanan objek Arsip di bucket tanpa memulihkannya. Anda akan dikenakan biaya pengambilan data Arsip berdasarkan ukuran data Arsip yang diakses. Untuk informasi lebih lanjut, lihat Akses Waktu Nyata untuk Objek Arsip.

Catatan
  • Jika Anda memanggil operasi CopyObject untuk mengonversi kelas penyimpanan objek di bucket yang memiliki pengendalian versi diaktifkan, OSS secara otomatis menghasilkan ID versi unik untuk objek tujuan. ID versi dikembalikan di header respons x-oss-version-id.

  • Jika pengendalian versi dinonaktifkan atau ditangguhkan untuk bucket, OSS menghasilkan versi dengan ID null untuk objek tujuan dan menimpa versi yang ada dengan ID null. Jika kelas penyimpanan versi yang ditimpa adalah IA, Arsip, Arsip Dingin, atau Deep Cold Archive, Anda mungkin dikenakan biaya untuk penggunaan penyimpanan versi yang disimpan kurang dari durasi penyimpanan minimum. Untuk informasi lebih lanjut, lihat Bagaimana saya dikenakan biaya untuk objek yang durasi penyimpanannya kurang dari durasi penyimpanan minimum?

Aturan untuk konversi kelas penyimpanan dengan memanggil CopyObject

  • LRS

    Anda dapat mengonversi objek LRS antara dua dari kelas penyimpanan berikut: Standar LRS, IA LRS, Arsip LRS, Arsip Dingin LRS, dan Deep Cold Archive LRS.

  • ZRS

    Konversi antar kelas penyimpanan mendukung Standar ZRS, IA ZRS, dan Arsip ZRS.

    Saat mengonversi objek Arsip LRS menjadi objek Standar ZRS atau IA ZRS, operasi diperlukan berdasarkan Pengaturan Bucket tempat objek berada.

Metode untuk mengonversi kelas penyimpanan objek secara manual

Gunakan Konsol OSS

Jika Anda ingin mengonversi kelas penyimpanan objek di Konsol OSS, ukuran objek tidak boleh melebihi 1 GB. Untuk mengonversi kelas penyimpanan objek yang ukurannya lebih besar dari 1 GB, kami sarankan Anda menggunakan OSS SDK atau ossutil.

  1. Masuk ke Konsol OSS.

  2. Di panel navigasi kiri, klik Buckets. Di halaman Buckets, klik bucket tempat objek yang ingin Anda konversi kelas penyimpanannya disimpan.

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

  4. Di halaman Objects, temukan objek yang ingin Anda konversi kelas penyimpanannya dan pilih more > Change Storage Class.

  5. Kami sarankan Anda tetap mengaktifkan Retain User Metadata untuk mempertahankan metadata pengguna objek setelah Anda mengonversi kelas penyimpanan objek.

  6. Pilih kelas penyimpanan tujuan untuk objek, lalu klik OK.

Gunakan OSS SDK

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 {
        // Dalam contoh ini, endpoint wilayah China (Hangzhou) digunakan. Tentukan endpoint aktual Anda.
        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 dikonfigurasi.
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // Dalam contoh ini, bucket dan objek Standar atau IA harus dibuat terlebih dahulu.
        // Tentukan nama bucket. Contoh: examplebucket.
        String bucketName = "examplebucket";
        // Tentukan jalur lengkap objek. Jangan sertakan nama bucket dalam jalur lengkap. 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.
        // Ketika 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 objek CopyObjectRequest.
            CopyObjectRequest request = new CopyObjectRequest(bucketName, objectName, bucketName, objectName) ;

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

            // Konversikan kelas penyimpanan objek menjadi Arsip.
            objectMetadata.setHeader("x-oss-storage-class", StorageClass.Archive);
            // Konversikan kelas penyimpanan objek menjadi Arsip Dingin.
            // objectMetadata.setHeader("x-oss-storage-class", StorageClass.ColdArchive);
            // Konversikan kelas penyimpanan objek menjadi 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("Tangkap OSSException, yang berarti permintaan Anda sampai ke OSS, "
                    + "tetapi ditolak dengan pesan kesalahan karena alasan tertentu.");
            System.out.println("Pesan Kesalahan:" + oe.getErrorMessage());
            System.out.println("Kode Kesalahan:" + oe.getErrorCode());
            System.out.println("ID Permintaan:" + oe.getRequestId());
            System.out.println("ID Host:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Tangkap ClientException, yang berarti klien mengalami "
                    + "masalah internal serius saat mencoba berkomunikasi dengan OSS, "
                    + "seperti tidak dapat mengakses jaringan.");
            System.out.println("Pesan Kesalahan:" + 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, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. 
$provider = new EnvironmentVariableCredentialsProvider();
// Dalam contoh ini, endpoint wilayah China (Hangzhou) digunakan. Tentukan endpoint aktual Anda. 
$endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Tentukan nama bucket. 
$bucket= "<yourBucketName>";
// Tentukan jalur lengkap objek. Jangan sertakan nama bucket dalam jalur lengkap. 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 ke mana Anda ingin mengonversi objek. Dalam contoh ini, kelas penyimpanan diatur ke Arsip. 
    $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__ . ": GAGAL\n");
    printf($e->getMessage() . "\n");
    return;
}

print(__FUNCTION__ . ": OK" . "\n");
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 Anda telah mengonfigurasi variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET. 
  accessKeyId: process.env.OSS_ACCESS_KEY_ID,
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,
  authorizationV4: true,
  // Tentukan nama bucket. 
  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, 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 sesuai dengan 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 jalur lengkap objek. Jangan sertakan nama bucket dalam jalur lengkap. Contoh: exampledir/exampleobject.txt. 
# Pastikan bahwa kelas penyimpanan objek adalah Standar atau IA. 
object_name = 'exampledir/exampleobject.txt'

# Konversikan kelas penyimpanan objek menjadi Arsip dengan mengatur header x-oss-storage-class ke oss2.BUCKET_STORAGE_CLASS_ARCHIVE. 
headers = {'x-oss-storage-class': oss2.BUCKET_STORAGE_CLASS_ARCHIVE}
# Konversikan kelas penyimpanan objek menjadi Arsip Dingin 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}
# Konversikan kelas penyimpanan objek menjadi 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}
# Konversikan 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, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. 
	provider, err := oss.NewEnvironmentVariableCredentialsProvider()
	if err != nil {
		log.Fatalf("Gagal membuat penyedia kredensial: %v", err)
	}

	// Buat instance OSSClient. 
	// Tentukan endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur endpoint ke https://oss-cn-hangzhou.aliyuncs.com. Tentukan endpoint aktual Anda. 
	// Tentukan wilayah tempat bucket berada. Misalnya, jika bucket Anda berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou.  
	clientOptions := []oss.ClientOption{oss.SetCredentialsProvider(&provider)}
	clientOptions = append(clientOptions, oss.Region("yourRegion"))
	// Tentukan versi tanda tangan.
	clientOptions = append(clientOptions, oss.AuthVersion(oss.AuthV4))
	client, err := oss.New("yourEndpoint", "", "", clientOptions...)
	if err != nil {
		log.Fatalf("Gagal membuat klien OSS: %v", err)
	}

	// Tentukan nama bucket. 
	bucketName := "yourBucketName" // Ganti yourBucketName dengan nama bucket aktual.
	// Tentukan jalur lengkap objek. Jangan sertakan nama bucket dalam jalur lengkap. 
	objectName := "yourObjectName" // Ganti yourObjectName dengan jalur objek aktual.

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

	// Konversikan kelas penyimpanan objek menjadi Arsip. 
	_, err = bucket.CopyObject(objectName, objectName, oss.ObjectStorageClass(oss.StorageArchive))
	if err != nil{
		log.Fatalf("Gagal mengubah kelas penyimpanan objek: %v", err)
	}

	log.Println("Kelas penyimpanan berhasil diubah.")
}
OSSCopyObjectRequest * copy = [OSSCopyObjectRequest new];
copy.sourceBucketName = @"examplebucket";
copy.sourceObjectKey = @"exampleobject.txt";
copy.bucketName = @"examplebucket";
copy.objectKey = @"exampleobject.txt";
// Atur 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];  
#include <iostream>
#include <alibabacloud/oss/OssClient.h>

using namespace AlibabaCloud::OSS;

int main(void)
{  
            
    /* Tentukan 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";
    /* Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur wilayah ke cn-hangzhou. */
    std::string Region = "yourRegion";
    /* Tentukan nama bucket. Contoh: examplebucket. */
    std::string BucketName = "examplebucket";
    /* Tentukan jalur lengkap objek. Jangan sertakan nama bucket dalam jalur lengkap. Contoh: exampledir/exampleobject.txt. */
    std::string ObjectName = "exampledir/exampleobject.txt";
  
    /* Inisialisasi sumber daya seperti sumber daya jaringan. */
    InitializeSdk();
    ClientConfiguration conf;
    conf.signatureVersion = SignatureVersionType::V4;
    /* Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi. */
    auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
    OssClient client(Endpoint, credentialsProvider, conf);
    client.SetRegion(Region);
    
    /* Tentukan kelas penyimpanan ke mana Anda ingin mengonversi objek. Dalam contoh ini, kelas penyimpanan diatur ke Arsip. */
    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);
    
    /* Konversikan kelas penyimpanan objek ke kelas penyimpanan yang ditentukan. */
    auto outcome = client.CopyObject(request);
    if (!outcome.isSuccess()) {
        /* Tangani pengecualian. */
        std::cout << "CopyObject gagal" <<
        ",kode:" << outcome.error().Code() <<
        ",pesan:" << outcome.error().Message() <<
        ",requestId:" << outcome.error().RequestId() << std::endl;
        return -1;
    }
    
    /* Lepaskan sumber daya seperti sumber daya jaringan. */
    ShutdownSdk();
    return 0;
}

Gunakan ossutil

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

Gunakan RESTful API

Jika bisnis Anda memerlukan tingkat penyesuaian yang tinggi, Anda dapat langsung memanggil RESTful API. Untuk langsung memanggil API, Anda harus menyertakan perhitungan tanda tangan dalam kode Anda. Untuk informasi lebih lanjut, lihat CopyObject.

Catatan Penggunaan

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

Ukuran tagihan minimum

Ukuran tagihan minimum untuk sebuah objek adalah 64 KB. Jika ukuran objek kurang dari 64 KB, Anda akan dikenakan biaya berdasarkan ukuran tagihan minimum objek tersebut.

Durasi penyimpanan minimum

Durasi penyimpanan minimum adalah 30 hari untuk objek IA, 60 hari untuk objek Arsip, dan 180 hari untuk objek Arsip Dingin dan Deep Cold Archive. Jika sebuah objek disimpan selama periode waktu kurang dari durasi penyimpanan minimum, Anda akan dikenakan biaya untuk penggunaan penyimpanan objek yang disimpan kurang dari durasi penyimpanan minimum. Untuk informasi lebih lanjut, lihat Biaya Penyimpanan.

  • Konfigurasikan Aturan Siklus Hidup untuk Mengonversi Kelas Penyimpanan Objek Secara Otomatis

    • Jika Anda mengonversi kelas penyimpanan objek ke IA atau Arsip, OSS tidak menghitung ulang periode retensi.

      Misalnya, sebuah objek bernama a.txt adalah objek Standar. Setelah objek disimpan di OSS selama 10 hari, kelas penyimpanannya diubah menjadi IA berdasarkan aturan siklus hidup. Setelah konversi kelas penyimpanan, objek tersebut harus disimpan sebagai objek IA selama 20 hari lagi untuk memenuhi persyaratan durasi penyimpanan minimum untuk kelas penyimpanan IA.

    • Jika Anda mengonversi kelas penyimpanan objek ke Arsip Dingin atau Deep Cold Archive, OSS menghitung ulang periode retensi.

      • Contoh 1: Sebuah objek bernama a.txt adalah objek Standar atau IA. Setelah objek disimpan di OSS selama 10 hari, kelas penyimpanannya diubah menjadi Arsip Dingin atau Deep Cold Archive berdasarkan aturan siklus hidup. Setelah konversi kelas penyimpanan, objek tersebut harus disimpan selama 180 hari untuk memenuhi persyaratan durasi penyimpanan minimum untuk kelas penyimpanan Arsip Dingin atau Deep Cold Archive.

      • Contoh 2: Sebuah objek bernama a.txt adalah objek Arsip Dingin. Setelah objek disimpan di OSS selama 30 hari, kelas penyimpanannya diubah menjadi Deep Cold Archive berdasarkan aturan siklus hidup. Anda akan dikenakan biaya untuk penggunaan penyimpanan objek Arsip Dingin yang disimpan selama 30 hari dan penggunaan penyimpanan objek Arsip Dingin yang disimpan kurang dari durasi penyimpanan minimum (180 - 30). Setelah objek diubah menjadi objek Deep Cold Archive, objek tersebut harus disimpan selama 180 hari untuk memenuhi persyaratan durasi penyimpanan minimum untuk kelas penyimpanan Deep Cold Archive.

  • Panggil CopyObject untuk Mengonversi Kelas Penyimpanan Objek Secara Manual

    Jika Anda memanggil operasi CopyObject untuk mengonversi kelas penyimpanan objek secara manual, OSS menghitung ulang durasi penyimpanan objek tersebut.

    Misalnya, sebuah objek bernama a.txt adalah objek Standar. Setelah objek disimpan di OSS selama 10 hari, kelas penyimpanannya diubah menjadi IA dengan memanggil operasi CopyObject. Setelah konversi kelas penyimpanan, objek tersebut harus disimpan sebagai objek IA selama 30 hari untuk memenuhi persyaratan durasi penyimpanan minimum untuk kelas penyimpanan IA.

Catatan

Jika Anda mengganti nama objek IA, objek Arsip, Arsip Dingin, atau Deep Cold Archive, atau menimpa objek dengan mengunggah objek dengan nama yang sama sebelum durasi penyimpanan minimum berakhir, Anda juga akan dkenakan biaya untuk penggunaan penyimpanan objek yang disimpan kurang dari durasi penyimpanan minimum. Misalnya, jika Anda mengganti nama objek IA setelah disimpan selama 29 hari, OSS akan menghitung ulang waktu terakhir dimodifikasi objek tersebut. Artinya, Anda perlu menyimpan objek selama 30 hari lagi untuk memenuhi persyaratan durasi penyimpanan minimum untuk kelas penyimpanan IA.

Waktu Pemulihan

Objek Arsip, Arsip Dingin, dan Deep Cold Archive harus dipulihkan sebelum dapat diakses. Proses pemulihan memerlukan waktu tertentu. Jika skenario bisnis Anda memerlukan akses real-time ke objek, kami sarankan agar Anda tidak mengonversi kelas penyimpanan objek ke Arsip, Arsip Dingin, atau Deep Cold Archive.

Biaya Panggilan Operasi API

Metode Konversi

Kelas Penyimpanan Sebelum Konversi

Biaya Panggilan Operasi API

Aturan Siklus Hidup

Standar, IA, Arsip, dan Arsip Dingin

Anda akan dikenakan biaya untuk permintaan PUT berdasarkan kelas penyimpanan sebelum konversi. Biaya panggilan API termasuk dalam tagihan untuk bucket saat ini.

CopyObject

Arsip

  • Akses waktu nyata untuk objek Arsip diaktifkan untuk bucket sumber

    • Anda akan dikenakan biaya untuk permintaan GET berdasarkan kelas penyimpanan objek sumber. Biaya panggilan API termasuk dalam tagihan untuk bucket sumber.

    • Anda akan dikenakan biaya untuk permintaan PUT berdasarkan kelas penyimpanan objek tujuan. Biaya panggilan API termasuk dalam tagihan untuk bucket tujuan.

  • Akses waktu nyata untuk objek Arsip tidak diaktifkan untuk bucket sumber

    Anda akan dikenakan biaya untuk permintaan PUT berdasarkan kelas penyimpanan objek sumber. Biaya panggilan API termasuk dalam tagihan untuk bucket tujuan.

Standar, IA, Arsip Dingin, dan Deep Cold Archive

Anda akan dikenakan biaya untuk permintaan PUT berdasarkan kelas penyimpanan objek sumber. Biaya panggilan API termasuk dalam tagihan untuk bucket tujuan.

Jika Anda memanggil operasi CopyObject untuk mengonversi objek Arsip di bucket tempat akses waktu nyata untuk objek Arsip diaktifkan, Anda tidak perlu memulihkan objek terlebih dahulu, dan Anda tidak dikenakan biaya untuk pemulihan. Namun, Anda akan dikenakan biaya pengambilan data Arsip berdasarkan ukuran data Arsip yang diakses.

Jika Anda memanggil operasi CopyObject untuk mengonversi objek Arsip di bucket tempat akses waktu nyata untuk objek Arsip tidak diaktifkan, objek tersebut harus dipulihkan terlebih dahulu, dan Anda akan dikenakan biaya untuk pemulihan.

Untuk informasi lebih lanjut, lihat Biaya Pemrosesan Data.

Biaya Pengambilan Data

Anda akan dikenakan biaya pengambilan data saat mengakses objek IA berdasarkan ukuran data IA yang diambil. Biaya tambahan juga berlaku saat memulihkan objek Arsip, Arsip Dingin, dan Deep Cold Archive. Jika akses waktu nyata untuk objek Arsip diaktifkan untuk bucket, Anda akan dikenakan biaya saat mengakses objek Arsip secara real-time. Biaya pengambilan data dan biaya lalu lintas keluar dihitung secara terpisah. Jika objek Standar diakses lebih dari sekali per bulan, mengonversi kelas penyimpanan objek ke IA, Arsip, Arsip Dingin, atau Deep Cold Archive dapat menyebabkan biaya lebih tinggi.

Biaya Penyimpanan Sementara

Jika Anda memulihkan objek Arsip Dingin atau Deep Cold Archive, salinan Standar dari objek tersebut dibuat untuk memfasilitasi akses. Anda akan dikenakan biaya penyimpanan sementara salinan tersebut untuk durasi sebagai objek Standar sebelum periode pemulihan berakhir.

Tanya Jawab Umum

Bisakah saya mengonversi kelas penyimpanan objek dari IA ke Standar dengan mengonfigurasi aturan siklus hidup berdasarkan waktu modifikasi terakhir?

Tidak, Anda tidak dapat menggunakan aturan siklus hidup untuk mengonversi kelas penyimpanan objek dari IA ke Standar. Anda dapat menggunakan salah satu metode berikut untuk mengonversi kelas penyimpanan objek dari IA ke Standar:

  • Panggil operasi CopyObject

    Anda dapat memanggil operasi CopyObject untuk mengonversi kelas penyimpanan objek dari IA ke Standar. Untuk informasi lebih lanjut, lihat Panggil CopyObject untuk Mengonversi Kelas Penyimpanan Objek Secara Manual.

  • Gunakan ossutil

    Anda dapat menggunakan ossutil untuk menjalankan perintah set-props dan menentukan opsi --storage-class. Dengan cara ini, Anda dapat mengonversi kelas penyimpanan satu atau beberapa objek dari IA ke Standar. Untuk informasi lebih lanjut, lihat set-props.