全部产品
Search
文档中心

Object Storage Service:Konfigurasikan aturan siklus hidup berdasarkan waktu modifikasi terakhir untuk mengurangi biaya penyimpanan OSS

更新时间:Nov 22, 2025

Tidak semua data yang diunggah ke Object Storage Service (OSS) sering diakses. Sebagian data harus disimpan untuk kepatuhan atau arsip, sementara data lain mungkin tidak lagi diperlukan dan dapat dihapus dari bucket. Anda dapat mengonfigurasi aturan siklus hidup berdasarkan waktu modifikasi terakhir untuk secara berkala memindahkan objek ke kelas penyimpanan yang lebih dingin atau menghapusnya guna mengurangi biaya penyimpanan.

Skenario

  • Catatan institusi medis kadang-kadang diakses dalam waktu enam bulan setelah diunggah ke OSS. Setelah enam bulan, catatan tersebut jarang diakses. Anda dapat menetapkan aturan siklus hidup untuk memindahkan catatan medis ke Archive Storage 180 hari setelah diunggah.

  • Rekaman pusat panggilan perusahaan digunakan untuk analisis dan verifikasi data dalam waktu dua bulan setelah diunggah ke OSS. Setelah dua bulan, rekaman tersebut kadang-kadang diakses; setelah enam bulan, aksesnya menjadi jarang; dan setelah dua tahun, data tersebut tidak lagi diperlukan. Anda dapat menetapkan aturan siklus hidup untuk memindahkan rekaman ke Infrequent Access (IA) setelah 60 hari, ke Archive Storage setelah 180 hari, dan menghapusnya setelah 730 hari.

  • Untuk menghapus banyak file dalam sebuah bucket, Anda dapat mengonfigurasi aturan siklus hidup yang berlaku untuk seluruh bucket guna menghapus semua file setelah satu hari.

Untuk informasi lebih lanjut tentang kelas penyimpanan, lihat Kelas penyimpanan.

Batasan

Kondisi pencocokan

Aturan siklus hidup hanya mendukung pencocokan berdasarkan awalan dan tag. Pencocokan wildcard, pencocokan akhiran, serta pencocokan ekspresi reguler tidak didukung.

Batasan kedaluwarsa fragmen

Anda tidak dapat mengonfigurasi dua atau lebih aturan siklus hidup yang berisi kebijakan siklus hidup bagian untuk objek yang namanya memiliki awalan tumpang tindih. Contoh:

  • Contoh 1

    Jika Anda mengonfigurasi aturan siklus hidup yang berisi kebijakan bagian untuk sebuah bucket, Anda tidak dapat mengonfigurasi aturan siklus hidup lain yang berisi kebijakan bagian untuk objek apa pun dalam bucket tersebut.

  • Contoh 2

    Jika Anda mengonfigurasi aturan siklus hidup yang berisi kebijakan bagian untuk objek yang namanya mengandung awalan dir1 dalam sebuah bucket, Anda tidak dapat mengonfigurasi aturan siklus hidup lain yang berisi kebijakan bagian untuk objek yang namanya mengandung awalan tumpang tindih, seperti dir1/dir2.

Batasan transisi kelas penyimpanan

Perhatian

Jumlah aturan

Anda dapat mengonfigurasi hingga 1.000 aturan siklus hidup untuk satu bucket. Setiap aturan siklus hidup dapat mencakup kebijakan berdasarkan waktu modifikasi terakhir dan waktu akses terakhir.

Semantik penimpaan

Operasi PutBucketLifecycle menimpa konfigurasi aturan siklus hidup yang ada pada bucket. Misalnya, jika aturan siklus hidup bernama Rule1 telah dikonfigurasi untuk suatu bucket dan Anda ingin menambahkan aturan siklus hidup lain bernama Rule2, lakukan langkah-langkah berikut:

  1. Ambil konfigurasi Rule1.

  2. Tambahkan Rule2 ke dalam konfigurasi tersebut.

  3. Aturan yang diperbarui menggabungkan Aturan 1 dan Aturan 2.

Waktu efektif

OSS memuat aturan siklus hidup dalam waktu 24 jam setelah aturan dibuat. Setelah dimuat, OSS menjalankan aturan tersebut setiap hari pukul 08:00:00 (UTC+8).

Jika aturan siklus hidup menentukan suatu aksi setelah sejumlah hari tertentu, periode tersebut dihitung dari waktu modifikasi terakhir objek. Aksi tersebut dieksekusi pada pukul 08:00 (UTC+8). Sebagai contoh, jika suatu aturan menetapkan penghapusan objek satu hari setelah modifikasi terakhir, maka waktu penghapusannya untuk objek yang terakhir dimodifikasi pada 20 Juli 2020 adalah sebagai berikut:

  • Objek yang diunggah sebelum pukul 08:00:00 (UTC+8) pada 20 Juli 2020 akan dihapus antara pukul 08:00:00 (UTC+8) pada 21 Juli 2020 hingga pukul 08:00:00 (UTC+8) pada 22 Juli 2020.

  • Objek yang diunggah setelah pukul 08:00:00 (UTC+8) pada 20 Juli 2020 akan dihapus antara pukul 08:00:00 (UTC+8) pada 22 Juli 2020 hingga pukul 08:00:00 (UTC+8) pada 23 Juli 2020.

Pembaruan aturan siklus hidup dapat membatalkan tugas siklus hidup yang dijadwalkan pada hari tersebut. Hindari memperbarui aturan siklus hidup secara berulang.

Waktu penyelesaian

  • Setelah aturan berlaku, operasi terkait siklus hidup—seperti penghapusan objek, konversi kelas penyimpanan, dan penghapusan bagian kedaluwarsa—biasanya selesai dalam waktu 24 jam untuk hingga 1 miliar objek di wilayah China (Hangzhou), China (Shanghai), China (Beijing), China (Zhangjiakou), China (Ulanqab), China (Shenzhen), dan Singapura. Di wilayah lain, operasi ini biasanya selesai dalam waktu 24 jam untuk hingga 100 juta objek.

  • Tugas tersebut mungkin memerlukan waktu lebih dari 24 jam—bahkan beberapa hari hingga berminggu-minggu—untuk diselesaikan jika jumlah objek yang dipindai sangat besar, banyak objek diproses oleh aturan siklus hidup, banyak tag digunakan, suatu objek memiliki banyak versi historis, atau banyak objek baru ditulis selama tugas siklus hidup sedang berjalan.

    Catatan

    Jika pengendalian versi diaktifkan untuk bucket, setiap operasi pada versi objek dihitung sebagai satu operasi tersendiri.

Deskripsi penagihan

Untuk informasi lebih lanjut mengenai biaya penyimpanan dan permintaan yang mungkin timbul saat menggunakan aturan siklus hidup untuk mengubah kelas penyimpanan objek atau menghapus objek, lihat Biaya terkait aturan siklus hidup.

Konfigurasikan aturan siklus hidup untuk bucket dengan OSS-HDFS diaktifkan

  • Konfigurasikan aturan siklus hidup berdasarkan file OSS dalam bucket dengan OSS-HDFS diaktifkan

    Untuk mengonfigurasi atau memodifikasi aturan siklus hidup berdasarkan waktu modifikasi terakhir agar berlaku untuk semua objek dalam bucket yang memiliki OSS-HDFS diaktifkan, gunakan elemen NOT untuk mengecualikan objek yang disimpan dalam direktori .dlsdata/. Hal ini mencegah aksi penghapusan objek atau konversi kelas penyimpanan yang dipicu oleh aturan siklus hidup diterapkan pada data OSS-HDFS, sehingga tidak mengganggu operasi baca dan tulis pada data tersebut.

    p571593..jpeg

  • Konfigurasikan aturan siklus hidup berdasarkan file HDFS dalam bucket dengan OSS-HDFS diaktifkan

    Untuk menyimpan data yang sering diakses sebagai objek Standard dan data yang jarang diakses sebagai objek Infrequent Access, Archive, atau Cold Archive, Anda dapat memanfaatkan fitur penyimpanan bertingkat berdasarkan aturan siklus hidup. Untuk informasi lebih lanjut, lihat Gunakan penyimpanan bertingkat.

Elemen komposisi

Elemen pencocokan

  • Pencocokan berdasarkan awalan: Mencocokkan objek dan fragmen berdasarkan awalan yang ditentukan. Anda dapat membuat beberapa aturan untuk awalan berbeda, namun awalan tidak boleh diduplikasi. Konvensi penamaan untuk awalan sama dengan objek. Untuk informasi selengkapnya, lihat Objek.

  • Pencocokan berdasarkan tag: Mencocokkan objek berdasarkan kunci dan nilai tag yang ditentukan. Anda dapat mengonfigurasi beberapa tag dalam satu aturan. Aturan siklus hidup hanya dijalankan jika objek berisi semua tag yang ditentukan.

    Tag yang ditetapkan dalam aturan siklus hidup

    Tag objek

    Apakah aturan siklus hidup berlaku untuk objek?

    a:1,b:2

    a:1

    Tidak

    a:1,b:3

    Tidak

    a:1,b:2

    Ya

    a;1,b:2,c:3

    Ya

    Catatan

    Aturan pencocokan berbasis tag tidak berlaku untuk fragmen.

  • Pencocokan berdasarkan awalan dan tag: Mencocokkan objek berdasarkan filter awalan dan tag yang ditentukan.

  • Berlaku untuk seluruh bucket: Mencocokkan semua objek dan fragmen dalam bucket tersebut.

  • Elemen NOT: Jika Anda ingin aturan siklus hidup memproses objek yang cocok dengan awalan dan tag tertentu sambil melewati objek lain, gunakan elemen NOT untuk menentukan awalan dan tag objek yang akan dilewati. Untuk contoh konfigurasi elemen NOT, lihat Contoh NOT.

    Penting
    • Aturan siklus hidup kini mendukung beberapa elemen NOT. Fitur ini berada dalam pratinjau undangan dan belum tersedia untuk semua pengguna. Untuk menggunakannya, hubungi Dukungan Teknis.

    • Jumlah total elemen NOT dalam satu bucket tidak boleh melebihi 1.000. Jumlah elemen NOT dalam satu aturan tidak boleh melebihi 100. Jumlah total elemen Prefix dalam semua aturan tidak boleh melebihi 2.000.

    • Setelah menggunakan beberapa elemen NOT, kelola operasi aturan siklus hidup selanjutnya melalui konsol.

Waktu kedaluwarsa dan aksi untuk objek

  • Kedaluwarsa dalam hari: Tentukan jumlah hari N dan aksi yang akan dilakukan terhadap objek yang kedaluwarsa. Ketentuan ini berlaku untuk semua objek dalam bucket non-versi serta objek versi saat ini dalam bucket versi. Objek kedaluwarsa N hari setelah waktu modifikasi terakhirnya, dan aksi yang ditentukan akan dijalankan.

  • Kedaluwarsa pada tanggal tertentu: Tentukan tanggal kedaluwarsa dan aksi yang akan dilakukan terhadap objek yang kedaluwarsa. Ketentuan ini berlaku untuk semua objek dalam bucket non-versi serta objek versi saat ini dalam bucket versi. Semua objek yang terakhir dimodifikasi sebelum tanggal tersebut akan kedaluwarsa, dan aksi yang ditentukan akan dijalankan.

  • Hari sejak menjadi versi non-saat ini: Tentukan jumlah hari N dan aksi yang akan dilakukan terhadap objek versi non-saat ini yang kedaluwarsa. Objek kedaluwarsa N hari setelah menjadi versi non-saat ini, dan aksi yang ditentukan akan dijalankan.

Anda dapat mengubah kelas penyimpanan objek yang kedaluwarsa atau menghapusnya. Untuk informasi selengkapnya, lihat Elemen konfigurasi aturan siklus hidup.

Waktu kedaluwarsa dan aksi untuk fragmen

  • Kedaluwarsa dalam hari: Tentukan jumlah hari N. Fragmen file akan dihapus N hari setelah waktu modifikasi terakhirnya.

  • Kedaluwarsa pada tanggal tertentu: Tentukan tanggal kedaluwarsa. Semua fragmen file yang terakhir dimodifikasi sebelum tanggal tersebut akan dihapus.

Deskripsi aturan

Awalan berbeda

Misalnya, sebuah bucket berisi objek berikut:

logs/programl/log1.txt
logs/program2/log2.txt
logs/program3/log3.txt
doc/readme.txt

Jika aturan siklus hidup menentukan awalan `logs/`, aturan tersebut hanya berlaku untuk objek yang diawali dengan `logs/`. Jika awalannya adalah `doc/readme.txt`, aturan tersebut hanya berlaku untuk objek `doc/readme.txt`.

Catatan

Anda dapat menentukan awalan berbahasa Tionghoa dalam aturan siklus hidup.

Ketika Anda melakukan operasi GET atau HEAD pada objek yang cocok dengan kebijakan kedaluwarsa, OSS menambahkan header x-oss-expiration ke tanggapan. Nilai expiry-date menunjukkan tanggal kedaluwarsa objek, sedangkan rule-id menunjukkan ID aturan yang cocok.

Awalan dan tag yang sama

Ketika beberapa aturan siklus hidup berlaku untuk objek dengan awalan dan tag yang sama, aksi hapus memiliki prioritas lebih tinggi daripada aksi transisi kelas penyimpanan. Dalam contoh berikut, rule1 menentukan bahwa semua objek dengan awalan `abc` dan tag `a=1` dihapus setelah 20 hari, sehingga rule2 tidak berlaku.

aturan

awalan

tag

aksi

rule1

abc

a=1

Hapus setelah 20 hari

rule2

abc

a=1

Transisi ke Archive setelah 20 hari

Awalan tumpang tindih dan tag yang sama

Dalam contoh berikut, rule1 menentukan bahwa semua objek dengan tag `a=1` ditransisikan ke Infrequent Access (IA) setelah 10 hari. Rule2 menentukan bahwa objek dengan awalan `abc` dan tag `a=1` dihapus setelah 120 hari.

aturan

awalan

tag

aksi

rule1

-

a=1

Transisi ke IA setelah 10 hari

rule2

abc

a=1

Hapus setelah 120 hari

Pada contoh lain, rule3 menentukan bahwa semua objek dengan tag `a=1` ditransisikan ke Archive setelah 20 hari. Karena objek yang telah berada di kelas Archive tidak dapat ditransisikan ke IA, rule4—yang menentukan bahwa objek dengan awalan `abc` dan tag `a=1` ditransisikan ke IA setelah 30 hari—tidak berlaku.

aturan

awalan

tag

aksi

rule3

-

a=1

Transisi ke Archive setelah 20 hari

rule4

abc

a=1

Transisi ke IA setelah 30 hari

NOT

Ketika Anda mengonfigurasi beberapa aturan siklus hidup untuk bucket yang sama dan salah satu aturan menggunakan elemen NOT, perilaku yang ditentukan oleh elemen NOT hanya berlaku dalam cakupan aturan tersebut. Contoh berikut menjelaskan lebih lanjut:

  • Contoh 1

    • Aturan siklus hidup 1 menentukan bahwa objek dengan awalan `dir/` dalam `examplebucket` dihapus setelah 100 hari.

    • Aturan siklus hidup 2 menggunakan elemen NOT untuk menentukan bahwa semua objek dalam `examplebucket`, kecuali yang memiliki awalan `dir/`, dihapus setelah 50 hari.

    Mulai dari waktu penerapan aturan siklus hidup, perilaku penghapusan untuk objek dalam `examplebucket` adalah sebagai berikut:

    Objek

    Perilaku penghapusan

    Objek dengan awalan `dir/`

    Dihapus setelah 100 hari

    Objek tanpa awalan `dir/`

    Dihapus setelah 50 hari

  • Contoh 2

    • Aturan siklus hidup 1 menggunakan elemen NOT untuk menentukan bahwa semua objek dalam `examplebucket`, kecuali yang memiliki tag `key1:value1`, dihapus setelah 30 hari.

    • Aturan siklus hidup 2 menentukan bahwa semua objek dalam `examplebucket` dengan tag `key2:value2` dihapus setelah 50 hari.

    Mulai dari waktu penerapan aturan siklus hidup, perilaku penghapusan untuk objek dalam `examplebucket` adalah sebagai berikut:

    Objek

    Perilaku penghapusan

    Semua objek tanpa tag di atas

    Dihapus setelah 30 hari

    Objek hanya dengan tag `key1:value1`

    Tidak dihapus

    Objek hanya dengan tag `key2:value2`

    Dihapus setelah 30 hari

    Objek dengan kedua tag `key1:value1` dan `key2:value2`

    Dihapus setelah 50 hari

Metode

Gunakan konsol OSS

  1. Masuk ke konsol OSS.

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

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

  4. Di halaman Lifecycle, klik Create Rule.

    Catatan

    Jika Anda hanya perlu membuat aturan siklus hidup berdasarkan waktu modifikasi terakhir, Anda tidak perlu mengaktifkan sakelar Enable Access Tracking di halaman Lifecycle. Mengaktifkan Pelacakan akses menimbulkan biaya tambahan. Pelacakan akses digunakan untuk membuat aturan siklus hidup berdasarkan waktu akses terakhir. Untuk informasi lebih lanjut, lihat Aturan siklus hidup berdasarkan waktu akses terakhir.

  5. Di panel Create Lifecycle Rule, konfigurasikan aturan siklus hidup seperti yang dijelaskan dalam tabel berikut.

    • Pengendalian versi dinonaktifkan untuk bucket

      Area

      Item Konfigurasi

      Deskripsi

      Basic Settings

      Status

      Tetapkan status aturan siklus hidup. Anda dapat memilih Start atau Disabled.

      • Jika Anda mengaktifkan aturan siklus hidup, kelas penyimpanan data ditransisikan atau data dihapus sesuai aturan.

      • Jika Anda menonaktifkan aturan siklus hidup, tugas siklus hidup dibatalkan.

      Applied To

      Pilih objek yang akan diterapkan aturan siklus hidup. Anda dapat memilih Object Prefix atau Whole Bucket.

      Catatan

      Jika Anda memilih Match by Prefix, Anda harus memasukkan path lengkap awalan tersebut. Misalnya, jika Anda ingin aturan hanya berlaku untuk semua file di bawah `src/dir1`, tetapkan awalan menjadi `src/dir1`. Jika Anda menetapkan awalan menjadi `dir1`, aturan tidak akan berlaku sebagaimana dimaksud.

      Allow Overlapped Prefixes

      Secara default, OSS memeriksa apakah awalan aturan siklus hidup berbeda tumpang tindih. Misalnya, Anda menetapkan dua aturan siklus hidup berikut dengan awalan tumpang tindih:

      • Aturan 1

        Menentukan bahwa semua objek dengan awalan dir1/ dalam bucket dihapus 180 hari setelah waktu modifikasi terakhirnya.

      • Aturan 2

        Menentukan bahwa semua objek dengan awalan dir1/dir2/ dalam bucket ditransisikan ke kelas penyimpanan Infrequent Access 30 hari setelah waktu modifikasi terakhirnya dan dihapus setelah 60 hari.

      Jika Anda tidak memilih opsi ini saat mengonfigurasi Aturan 2, sistem mendeteksi bahwa objek dalam direktori dir1/dir2/ cocok dengan dua aturan penghapusan. Akibatnya, Aturan 2 tidak dapat ditetapkan, dan pesan kesalahan Overlap for same action type Expiration. dilaporkan.

      Jika Anda memilih opsi ini saat mengonfigurasi Aturan 2, objek di bawah dir1/dir2/ ditransisikan ke kelas penyimpanan Infrequent Access setelah 30 hari dan dihapus setelah 60 hari. Objek lain di bawah dir1/ dihapus setelah 180 hari.

      Catatan

      Jika Anda mengonfigurasi beberapa aturan dan salah satunya berlaku untuk seluruh bucket, hal ini dianggap sebagai kasus awalan tumpang tindih.

      Prefix

      Masukkan awalan nama objek yang harus dicocokkan oleh aturan.

      • Jika Anda menetapkan awalan menjadi img, aturan tersebut cocok dengan semua objek yang namanya diawali dengan `img`, seperti `imgtest.png` dan `img/example.jpg`.

      • Jika Anda menetapkan awalan menjadi img/, aturan tersebut cocok dengan semua objek yang namanya diawali dengan `img/`, seperti `img/example.jpg` dan `img/test.jpg`.

      Tag

      Aturan siklus hidup hanya berlaku untuk objek dengan tag yang ditentukan.

      • Jika Anda tidak menetapkan awalan tetapi menetapkan tag dengan kunci `a` dan nilai `1`, aturan tersebut cocok dengan semua objek dalam bucket dengan tag `a=1`.

      • Jika Anda menetapkan awalan menjadi `img` dan juga menetapkan tag dengan kunci `a` dan nilai `1`, aturan tersebut cocok dengan semua objek dalam bucket yang namanya diawali dengan `img` dan memiliki tag `a=1`.

      Untuk informasi lebih lanjut, lihat Penandaan objek.

      NOT

      Opsi NOT digunakan untuk mencegah aturan siklus hidup diterapkan pada objek dengan awalan dan tag tertentu.

      Penting
      • Saat Anda mengaktifkan opsi NOT, Anda harus menentukan setidaknya awalan atau tag. Anda dapat menentukan keduanya (awalan dan tag), atau hanya awalan atau tag saja.

      • Kunci yang didefinisikan untuk tag dalam semantik NOT tidak boleh sama dengan kunci yang didefinisikan dalam item konfigurasi Tag.

      • Setelah Anda mengaktifkan opsi NOT, Anda tidak dapat menetapkan kebijakan kedaluwarsa fragmen.

      Object Size

      Tentukan ukuran file yang akan diterapkan aturan siklus hidup.

      • Minimum Size: Aturan siklus hidup berlaku untuk file yang lebih besar dari nilai ini. Nilainya harus lebih besar dari 0 B dan kurang dari 5 TB.

      • Maximum Size: Aturan siklus hidup berlaku untuk file yang lebih kecil dari nilai ini. Nilainya harus lebih besar dari 0 B dan kurang dari atau sama dengan 5 TB.

      Penting

      Jika Anda menentukan ukuran file minimum dan maksimum dalam aturan siklus hidup yang sama:

      • Pastikan ukuran file maksimum lebih besar dari ukuran file minimum.

      • Anda tidak dapat mengonfigurasi kebijakan eksekusi fragmen.

      • Anda tidak dapat mengonfigurasi kebijakan untuk menghapus penanda hapus.

      Policy for Objects

      Object Lifecycle

      Pilih kebijakan kedaluwarsa objek. Anda dapat memilih Specify Days, Specify Date, atau Disabled. Jika Anda memilih Disabled, kebijakan kedaluwarsa file tidak berlaku.

      Lifecycle-based Rules

      Konfigurasikan aturan untuk mengubah kelas penyimpanan objek atau menghapus objek yang kedaluwarsa. Anda dapat memilih Infrequent Access, Archive Storage, Cold Archive Storage, Deep Cold Archive Storage, dan Delete Data.

      Misalnya, jika Anda menetapkan Object Lifecycle ke Specify Date dan menetapkan tanggal menjadi 24 September 2023, objek yang terakhir dimodifikasi sebelum 24 September 2023 akan dihapus secara otomatis dan tidak dapat dipulihkan.

      Policy for Parts

      Part Lifecycle

      Konfigurasikan kebijakan eksekusi fragmen. Jika Anda telah memilih kotak centang Tag, Anda tidak dapat mengonfigurasi opsi ini. Anda dapat memilih untuk mengeksekusi kebijakan kedaluwarsa fragmen dengan Specify Days atau Specify Date, atau Anda dapat memilih Disabled untuk kebijakan kedaluwarsa fragmen. Jika Anda memilih Disabled, kebijakan kedaluwarsa fragmen tidak berlaku.

      Penting

      Aturan siklus hidup harus mencakup setidaknya kebijakan kedaluwarsa file atau kebijakan kedaluwarsa fragmen.

      Rules for Parts

      Tentukan kapan fragmen kedaluwarsa berdasarkan jumlah hari atau tanggal yang dipilih untuk kebijakan kedaluwarsa fragmen. Fragmen yang kedaluwarsa akan dihapus secara otomatis dan tidak dapat dipulihkan.

    • Pengendalian versi diaktifkan untuk bucket

      Setelah Pengendalian versi diaktifkan, item konfigurasi di area Basic Settings dan Policy for Parts dikonfigurasi dengan cara yang sama seperti untuk bucket dengan Pengendalian versi dinonaktifkan. Tabel berikut hanya menjelaskan perbedaan item konfigurasi saat Pengendalian versi diaktifkan.

      Penting

      Sebelum mengonfigurasi aturan siklus hidup, perhatikan hal berikut: Jika Pengendalian versi diaktifkan untuk bucket dan bucket tersebut berfungsi sebagai tujuan untuk replikasi lintas wilayah, penanda hapus yang disinkronkan dari bucket sumber akan mengubah objek dengan nama yang sama di bucket tujuan dari versi saat ini menjadi versi sebelumnya. Oleh karena itu, berhati-hatilah saat mengonfigurasi aturan pembersihan untuk versi sebelumnya agar tidak menghapus data secara tidak disengaja di bucket saat ini.

      Area

      Item Konfigurasi

      Deskripsi

      Policy for Current Versions

      Clean Up Object Delete Markers

      Setelah pengendalian versi diaktifkan, opsi Clean Up Object Delete Markers ditambahkan ke kebijakan pembersihan. Opsi lainnya sama seperti saat pengendalian versi dinonaktifkan.

      Jika Anda memilih opsi ini dan objek saat ini hanya memiliki satu versi yang merupakan penanda hapus, OSS menghapus penanda hapus objek yang kedaluwarsa. Jika objek saat ini memiliki beberapa versi dan versi terbaru adalah penanda hapus, OSS menyimpan penanda hapus tersebut. Untuk informasi lebih lanjut tentang penanda hapus, lihat Penanda hapus.

      Penting

      Aturan ini tidak membersihkan penanda hapus objek saat versi sebelumnya ada. Oleh karena itu, segera bersihkan penanda hapus objek dan versi sebelumnya yang tidak perlu. Jika tidak, menyimpan terlalu banyak penanda hapus di bucket dapat menurunkan kinerja List.

      Policy for Previous Versions

      Object Lifecycle

      Tetapkan kebijakan kedaluwarsa untuk file versi sebelumnya. Anda dapat memilih Specify Days atau Disabled. Jika Anda memilih Disabled, kebijakan kedaluwarsa file tidak berlaku.

      Lifecycle-based Rules

      Tetapkan periode kedaluwarsa N hari. Objek versi sebelumnya kedaluwarsa N hari setelah menjadi versi sebelumnya, dan aksi yang ditentukan dilakukan pada hari berikutnya. Misalnya, jika Anda menetapkan periode menjadi 30 hari, objek yang menjadi versi sebelumnya pada 1 September 2023 akan ditransisikan ke kelas penyimpanan yang ditentukan atau dihapus pada 1 Oktober 2023.

      Penting

      Anda dapat menentukan kapan objek menjadi versi sebelumnya dengan memeriksa waktu modifikasi terakhir dari versi berikutnya objek tersebut.

  6. Klik OK.

    Setelah aturan siklus hidup disimpan, Anda dapat melihat aturan yang dikonfigurasi di daftar kebijakan.

Gunakan SDK Alibaba Cloud

Bagian berikut memberikan contoh kode untuk mengonfigurasi aturan siklus hidup menggunakan SDK umum. Untuk contoh kode menggunakan SDK lain, lihat SDK.

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 {
        // 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, 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 China (Hangzhou), tetapkan wilayah menjadi cn-hangzhou.
        String region = "cn-hangzhou";

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

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

            // Tentukan ID aturan siklus hidup.
            String ruleId0 = "rule0";
            // Tentukan awalan yang ingin dicocokkan oleh aturan siklus hidup.
            String matchPrefix0 = "A0/";
            // Tentukan tag yang ingin dicocokkan oleh aturan siklus hidup.
            Map<String, String> matchTags0 = new HashMap<String, String>();
            // Tentukan kunci dan nilai tag. Dalam contoh ini, kunci diatur menjadi owner dan nilai diatur menjadi John.
            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/";

            // Tetapkan waktu kedaluwarsa menjadi tiga hari setelah waktu modifikasi terakhir.
            LifecycleRule rule = new LifecycleRule(ruleId0, matchPrefix0, LifecycleRule.RuleStatus.Enabled, 3);
            rule.setTags(matchTags0);
            request.AddLifecycleRule(rule);

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

            // Tentukan bahwa bagian kedaluwarsa tiga hari setelah terakhir dimodifikasi.
            rule = new LifecycleRule(ruleId2, matchPrefix2, LifecycleRule.RuleStatus.Enabled);
            LifecycleRule.AbortMultipartUpload abortMultipartUpload = new LifecycleRule.AbortMultipartUpload();
            abortMultipartUpload.setExpirationDays(3);
            rule.setAbortMultipartUpload(abortMultipartUpload);
            request.AddLifecycleRule(rule);

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

            // Tentukan bahwa kelas penyimpanan objek diubah menjadi IA 10 hari setelah terakhir dimodifikasi, dan menjadi Archive 30 hari setelah 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);

            // Tentukan bahwa kelas penyimpanan objek yang terakhir dimodifikasi sebelum 12 Oktober 2022 diubah menjadi Archive.
            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);

            // Tentukan bahwa rule6 dikonfigurasi untuk bucket yang diaktifkan pengendalian versinya.
            rule = new LifecycleRule(ruleId6, matchPrefix6, LifecycleRule.RuleStatus.Enabled);
            // Tentukan bahwa kelas penyimpanan objek diubah menjadi Archive 365 hari setelah objek terakhir dimodifikasi.
            storageTransitions = new ArrayList<LifecycleRule.StorageTransition>();
            storageTransition = new LifecycleRule.StorageTransition();
            storageTransition.setStorageClass(StorageClass.Archive);
            storageTransition.setExpirationDays(365);
            storageTransitions.add(storageTransition);
            rule.setStorageTransition(storageTransitions);
            // Konfigurasikan aturan siklus hidup untuk secara otomatis menghapus penanda hapus yang kedaluwarsa.
            rule.setExpiredDeleteMarker(true);
            // Tentukan bahwa kelas penyimpanan versi sebelumnya objek diubah menjadi IA 10 hari setelah objek terakhir dimodifikasi.
            LifecycleRule.NoncurrentVersionStorageTransition noncurrentVersionStorageTransition =
                    new LifecycleRule.NoncurrentVersionStorageTransition().withNoncurrentDays(10).withStrorageClass(StorageClass.IA);
            // Tentukan bahwa kelas penyimpanan versi sebelumnya objek diubah menjadi Archive 20 hari setelah objek terakhir dimodifikasi.
            LifecycleRule.NoncurrentVersionStorageTransition noncurrentVersionStorageTransition2 =
                    new LifecycleRule.NoncurrentVersionStorageTransition().withNoncurrentDays(20).withStrorageClass(StorageClass.Archive);
            // Tentukan bahwa versi sebelumnya objek dihapus 30 hari setelah objek terakhir dimodifikasi.
            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 mengonfigurasi aturan siklus hidup.
            ossClient.setBucketLifecycle(request);

            // Kueri aturan siklus hidup yang dikonfigurasi untuk bucket.
            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("Terjadi OSSException, yang berarti permintaan Anda sampai ke OSS, "
                    + "tetapi ditolak dengan tanggapan kesalahan karena suatu alasan.");
            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("Terjadi 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

// Sertakan file autoload untuk memuat dependensi
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;
use AlibabaCloud\Oss\V2\Models\LifecycleConfiguration;

// Tentukan deskripsi untuk parameter baris perintah
$optsdesc = [
    "region" => ['help' => 'Wilayah tempat bucket berada', 'required' => True], // (Wajib) Tentukan wilayah tempat bucket berada.
    "endpoint" => ['help' => 'Nama domain yang dapat digunakan layanan lain untuk mengakses OSS', 'required' => False], // (Opsional) Tentukan endpoint yang dapat digunakan layanan lain untuk mengakses OSS.
    "bucket" => ['help' => 'Nama bucket', 'required' => True], // (Wajib) Tentukan nama bucket.
];

// Hasilkan daftar opsi panjang untuk mengurai parameter baris perintah
$longopts = \array_map(function ($key) {
    return "$key:"; // Tambahkan titik dua setelah setiap parameter untuk menunjukkan bahwa nilai diperlukan
}, array_keys($optsdesc));

// Uraikan parameter baris perintah
$options = getopt("", $longopts); 

// Periksa apakah parameter wajib hilang
foreach ($optsdesc as $key => $value) {
    if ($value['required'] === True && empty($options[$key])) {
        $help = $value['help'];
        echo "Error: argumen berikut diperlukan: --$key, $help"; // Beri tahu pengguna tentang parameter wajib yang hilang
        exit(1); 
    }
}

// Dapatkan nilai parameter baris perintah
$region = $options["region"]; // Wilayah tempat bucket berada
$bucket = $options["bucket"]; // Nama bucket

// Gunakan variabel lingkungan untuk memuat ID AccessKey dan rahasia AccessKey
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

// Gunakan konfigurasi default SDK
$cfg = Oss\Config::loadDefault();

// Tentukan penyedia kredensial
$cfg->setCredentialsProvider($credentialsProvider);

// Tentukan wilayah
$cfg->setRegion($region);

// Tentukan endpoint jika endpoint disediakan
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]);
}

// Buat instance OSSClient
$client = new Oss\Client($cfg);

// Definisikan aturan siklus hidup untuk mengonversi objek yang namanya mengandung awalan log/ ke kelas penyimpanan IA setelah 30 hari
$lifecycleRule = new Oss\Models\LifecycleRule(
    prefix: 'log/', // Awalan objek
    transitions: array(
        new Oss\Models\LifecycleRuleTransition(
            days: 30, // Waktu konversi adalah 30 hari
            storageClass: 'IA' // Kelas penyimpanan target adalah IA
        )
    ),
    id: 'rule', // ID aturan
    status: 'Enabled' // Status aturan diaktifkan
);

// Buat objek konfigurasi siklus hidup dan tambahkan aturan siklus hidup
$lifecycleConfiguration = new LifecycleConfiguration(
    rules: array($lifecycleRule)
);

// Buat objek permintaan untuk menetapkan siklus hidup bucket dan masukkan konfigurasi siklus hidup
$request = new Oss\Models\PutBucketLifecycleRequest(
    bucket: $bucket,
    lifecycleConfiguration: $lifecycleConfiguration
);

// Panggil metode putBucketLifecycle untuk menetapkan aturan siklus hidup untuk bucket
$result = $client->putBucketLifecycle($request);

// Tampilkan hasil yang dikembalikan
printf(
    'status code:' . $result->statusCode . PHP_EOL . // Kode status respons HTTP
    'request id:' . $result->requestId . PHP_EOL // Pengidentifikasi unik permintaan
);

Node.js

const OSS = require('ali-oss')

const client = new OSS({
  // Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), tetapkan wilayah menjadi 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 putBucketLifecycle(lifecycle) {
  try {
    const result = await client.putBucketLifecycle('yourbucketname', [
    lifecycle
  ]);
    console.log(result);
  } catch (e) {
    console.log(e);
  }
}

const lifecycle1 = {
  id: 'rule1',
  status: 'Enabled',
  prefix: 'foo/',
  expiration: {
    // Tentukan bahwa versi saat ini objek kedaluwarsa tiga hari setelah objek terakhir dimodifikasi.
    days: 3 
  }
}
putBucketLifecycle(lifecycle1)

const lifecycle2 = {
  id: 'rule2',
  status: 'Enabled',
  prefix: 'foo/', 
  expiration: {
    // Tentukan bahwa objek yang dibuat sebelum tanggal tertentu kedaluwarsa.
    createdBeforeDate: '2020-02-18T00:00:00.000Z' 
  },
}
putBucketLifecycle(lifecycle2)

const lifecycle3 = {
  id: 'rule3',
  status: 'Enabled',
  prefix: 'foo/', 
  abortMultipartUpload: {
    // Tentukan bahwa bagian kedaluwarsa dalam tiga hari.
    days: 3 
  },
}
putBucketLifecycle(lifecycle3)

const lifecycle4 = {
  id: 'rule4',
  status: 'Enabled',
  prefix: 'foo/', 
  abortMultipartUpload: {
    // Tentukan bahwa bagian yang dibuat sebelum tanggal tertentu kedaluwarsa.
    createdBeforeDate: '2020-02-18T00:00:00.000Z' 
  },
}
putBucketLifecycle(lifecycle4)

const lifecycle5 = {
  id: 'rule5',
  status: 'Enabled',
  prefix: 'foo/', 
  transition: {
    // Tentukan bahwa kelas penyimpanan versi saat ini objek diubah menjadi Archive 20 hari setelah objek terakhir dimodifikasi.
    days: 20,
    storageClass: 'Archive'
  },
  expiration: {
    // Tentukan bahwa versi saat ini objek kedaluwarsa 21 hari setelah objek terakhir dimodifikasi.
    days: 21 
  },
}
putBucketLifecycle(lifecycle5)

const lifecycle6 = {
  id: 'rule6',
  status: 'Enabled',
  prefix: 'foo/', 
  transition: {
    //Tentukan bahwa kelas penyimpanan objek yang dibuat sebelum tanggal tertentu diubah menjadi Archive.
    createdBeforeDate: '2023-02-19T00:00:00.000Z', 
    storageClass: 'Archive'
  },
  expiration: {
    // Tentukan bahwa objek yang dibuat sebelum tanggal tertentu dihapus.
    createdBeforeDate: '2023-01-18T00:00:00.000Z' 
  },
}
putBucketLifecycle(lifecycle6)

const lifecycle7 = {
  id: 'rule7',
  status: 'Enabled',
  prefix: 'foo/', 
  expiration: {
    // Tentukan bahwa penanda hapus dihapus secara otomatis saat kedaluwarsa.
    expiredObjectDeleteMarker: true 
  }
}
putBucketLifecycle(lifecycle7)

const lifecycle8 = {
  id: 'rule8',
  status: 'Enabled',
  prefix: 'foo/', 
  // Tentukan bahwa kelas penyimpanan versi sebelumnya objek diubah menjadi IA 10 hari setelah objek terakhir dimodifikasi.
  noncurrentVersionTransition: {
    noncurrentDays: '10',
    storageClass: 'IA'
  }
}
putBucketLifecycle(lifecycle8)

const lifecycle9 = {
  id: 'rule9',
  status: 'Enabled',
  prefix: 'foo/', 
  // Tentukan bahwa kelas penyimpanan versi sebelumnya objek diubah menjadi IA 10 hari setelah objek terakhir dimodifikasi.
  noncurrentVersionTransition: {
    noncurrentDays: '10',
    storageClass: 'IA'
  },
  // Tentukan tag untuk objek yang ingin Anda cocokkan dengan aturan.
  tag: [{
    key: 'key1',
    value: 'value1'
  },
   {
     key: 'key2',
     value: 'value2'
   }]
}
putBucketLifecycle(lifecycle9)

Python

import argparse
import datetime
import alibabacloud_oss_v2 as oss

# Buat parser argumen baris perintah untuk menerima parameter yang dimasukkan pengguna.
parser = argparse.ArgumentParser(description="contoh put bucket lifecycle")

# Tambahkan argumen baris perintah --region, yang menentukan wilayah tempat bucket berada. Argumen ini wajib.
parser.add_argument('--region', help='Wilayah tempat bucket berada.', required=True)

# Tambahkan argumen baris perintah --bucket, yang menentukan nama bucket. Argumen ini wajib.
parser.add_argument('--bucket', help='Nama bucket.', required=True)

# Tambahkan argumen baris perintah --endpoint, yang menentukan nama domain yang dapat digunakan layanan lain untuk mengakses OSS. Argumen ini opsional.
parser.add_argument('--endpoint', help='Nama domain yang dapat digunakan layanan lain untuk mengakses OSS')

def main():
    # Uraikan argumen baris perintah.
    args = parser.parse_args()

    # Muat kredensial (ID AccessKey dan rahasia AccessKey) dari variabel lingkungan.
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # Muat konfigurasi default SDK.
    cfg = oss.config.load_default()

    # Tetapkan penyedia kredensial.
    cfg.credentials_provider = credentials_provider

    # Tetapkan wilayah tempat bucket berada.
    cfg.region = args.region

    # Jika pengguna menyediakan endpoint kustom, tetapkan dalam konfigurasi.
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    # Inisialisasi klien OSS menggunakan objek konfigurasi.
    client = oss.Client(cfg)

    result = client.put_bucket_lifecycle(oss.PutBucketLifecycleRequest(
            bucket=args.bucket,
            lifecycle_configuration=oss.LifecycleConfiguration(
                rules=[oss.LifecycleRule(
                    # Tentukan aturan siklus hidup rule1. Dalam aturan ini, objek yang memiliki awalan foo/ dan tag k1:v1 dikonversi ke kelas penyimpanan Infrequent Access (IA) 30 hari setelah terakhir dimodifikasi.
                    id='rule1',
                    status='Enabled',
                    prefix='foo/',
                    transitions=[oss.LifecycleRuleTransition(
                        days=30,
                        storage_class=oss.StorageClassType.IA,
                        is_access_time=False, # Tetapkan ke false, yang menunjukkan bahwa kebijakan berdasarkan waktu modifikasi terakhir.
                    )],
                    tags=[oss.Tag(
                        key='k1',
                        value='v1',
                    )],
                ), oss.LifecycleRule(
                    # Tentukan aturan siklus hidup rule2. Dalam aturan ini, untuk objek yang memiliki awalan dir/, penanda hapus dihapus secara otomatis jika objek berada dalam bucket yang diaktifkan pengendalian versinya dan hanya memiliki penanda hapus. Versi non-saat ini objek kedaluwarsa dan dihapus setelah 30 hari. Versi non-saat ini objek dikonversi ke kelas penyimpanan IA setelah 10 hari.
                    id='rule2',
                    status='Enabled',
                    prefix='dir/',
                    expiration=oss.LifecycleRuleExpiration(
                        days=10,
                        expired_object_delete_marker=True
                    ),
                    noncurrent_version_expiration=oss.NoncurrentVersionExpiration(
                        noncurrent_days=30,
                    ),
                    noncurrent_version_transition=oss.NoncurrentVersionTransition(
                        noncurrent_days=10,
                        storage_class=oss.StorageClassType.IA,
                        is_access_time=False, # Tetapkan ke false, yang menunjukkan bahwa kebijakan berdasarkan waktu modifikasi terakhir.
                    ),
                )]
            ),
    ))

    # Cetak kode status dan ID permintaan operasi.
    print(f'kode status: {result.status_code}, '  # Kode status HTTP, yang menunjukkan apakah permintaan berhasil.
          f'ID permintaan: {result.request_id}')    # ID permintaan, yang digunakan untuk melacak log permintaan dan untuk debugging.


if __name__ == "__main__":
    # Titik masuk program yang memanggil fungsi utama untuk menjalankan logika.
    main()

C#

using Aliyun.OSS;
using Aliyun.OSS.Common;
// Tentukan endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), tetapkan endpoint menjadi https://oss-cn-hangzhou.aliyuncs.com.
var endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
var accessKeyId = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_ID");
var accessKeySecret = Environment.GetEnvironmentVariable("OSS_ACCESS_KEY_SECRET");
// Tentukan nama bucket. Contoh: examplebucket.
var bucketName = "examplebucket";
// Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), tetapkan wilayah menjadi 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 objek dikonversi menjadi IA 90 hari setelah terakhir dimodifikasi.
        new LifecycleRule.LifeCycleNoncurrentVersionTransition(){
            StorageClass = StorageClass.IA,
            NoncurrentDays = 90
        },
        // Tentukan bahwa kelas penyimpanan versi sebelumnya objek dikonversi menjadi 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 berhasil ", bucketName);
}
catch (OssException ex)
{
    Console.WriteLine("Gagal dengan kode kesalahan: {0}; Info kesalahan: {1}. \nIDPermintaan:{2}\tIDHost:{3}",
        ex.ErrorCode, ex.Message, ex.RequestId, ex.HostId);
}
catch (Exception ex)
{
    Console.WriteLine("Gagal dengan info 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 diatur ke true, OSS secara berkala menjalankan aturan ini. Jika parameter ini diatur 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 dikonversi menjadi Archive 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 dikonversi 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();

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 China (Hangzhou), tetapkan endpoint menjadi https://oss-cn-hangzhou.aliyuncs.com. */
    std::string Endpoint = "yourEndpoint";
    /* Tentukan wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), tetapkan wilayah menjadi 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 Archive 365 hari setelah objek 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 objek diubah menjadi IA 10 hari setelah objek terakhir dimodifikasi. */
    auto transition1 = LifeCycleTransition();  
    transition1.Expiration().setDays(10);
    transition1.setStorageClass(StorageClass::IA);

    /* Tentukan bahwa kelas penyimpanan versi sebelumnya objek diubah menjadi Archive 20 hari setelah objek 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" <<
        ",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;
}

C

#include "oss_api.h"
#include "aos_http_io.h"
/* Tentukan endpoint wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), tetapkan endpoint menjadi 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 China (Hangzhou), tetapkan wilayah menjadi 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 akan 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 pool memori untuk mengelola memori. aos_pool_t setara dengan apr_pool_t. Kode yang digunakan untuk membuat pool memori termasuk dalam library APR. */
    aos_pool_t *pool;
    /* Buat pool memori. Nilai parameter kedua adalah NULL. Nilai ini menunjukkan bahwa pool tidak mewarisi pool 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 pool memori ke 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, kode:%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 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 China (Hangzhou) digunakan. Tentukan endpoint aktual Anda.
  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))
]

Go

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)

// Definisikan variabel global.
var (
	region     string // Wilayah tempat bucket berada.
	bucketName string // Nama bucket.
)

// Fungsi init digunakan untuk menginisialisasi parameter baris perintah.
func init() {
	flag.StringVar(&region, "region", "", "Wilayah tempat bucket berada.")
	flag.StringVar(&bucketName, "bucket", "", "Nama bucket.")
}

func main() {
	// Uraikan parameter baris perintah.
	flag.Parse()

	// Periksa apakah nama bucket kosong.
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, nama bucket diperlukan")
	}

	// Periksa apakah wilayah kosong.
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("parameter tidak valid, wilayah diperlukan")
	}

	// Muat konfigurasi default dan tetapkan penyedia kredensial dan wilayah.
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	// Buat klien OSS.
	client := oss.NewClient(cfg)

	// Buat permintaan untuk menetapkan aturan siklus hidup untuk bucket.
	request := &oss.PutBucketLifecycleRequest{
		Bucket: oss.Ptr(bucketName), // Nama bucket.
		LifecycleConfiguration: &oss.LifecycleConfiguration{
			Rules: []oss.LifecycleRule{
				{
					// Tentukan aturan siklus hidup rule1. Dalam aturan ini, file yang memiliki awalan foo dan tag kunci k1 serta nilai tag v1 dikonversi ke kelas penyimpanan Infrequent Access 30 hari setelah terakhir dimodifikasi.
					Status: oss.Ptr("Enabled"),
					ID:     oss.Ptr("rule1"),
					Prefix: oss.Ptr("foo/"),
					Transitions: []oss.LifecycleRuleTransition{
						{
							Days:         oss.Ptr(int32(30)),
							StorageClass: oss.StorageClassIA,
							IsAccessTime: oss.Ptr(false), // Tetapkan nilai ke false. Kebijakan berdasarkan waktu modifikasi terakhir.
						},
					},
					Tags: []oss.Tag{
						{
							Key:   oss.Ptr("k1"),
							Value: oss.Ptr("v1"),
						},
					},
				},
				{
					// Tentukan aturan siklus hidup rule2. Dalam aturan ini, untuk objek yang memiliki awalan dir dalam bucket yang diaktifkan pengendalian versinya, jika objek hanya memiliki penanda hapus, penanda hapus tersebut dihapus secara otomatis. Versi non-saat ini objek kedaluwarsa dan dihapus setelah 30 hari. Versi non-saat ini objek dikonversi ke kelas penyimpanan IA setelah 10 hari.
					ID:     oss.Ptr("rule2"),
					Prefix: oss.Ptr("dir/"),
					Status: oss.Ptr("Enabled"),
					Expiration: &oss.LifecycleRuleExpiration{
						Days:                      oss.Ptr(int32(10)),
						ExpiredObjectDeleteMarker: oss.Ptr(true),
					},
					NoncurrentVersionExpiration: &oss.NoncurrentVersionExpiration{
						NoncurrentDays: oss.Ptr(int32(30)),
					},
					NoncurrentVersionTransitions: []oss.NoncurrentVersionTransition{{
						NoncurrentDays: oss.Ptr(int32(10)),
						StorageClass:   oss.StorageClassIA,
						IsAccessTime:   oss.Ptr(false), // Tetapkan nilai ke false. Kebijakan berdasarkan waktu modifikasi terakhir.
					}},
				},
			},
		},
	}

	// Tetapkan aturan siklus hidup untuk bucket.
	result, err := client.PutBucketLifecycle(context.TODO(), request)
	if err != nil {
		log.Fatalf("gagal menetapkan siklus hidup bucket %v", err)
	}

	// Cetak hasil menetapkan aturan siklus hidup untuk bucket.
	log.Printf("hasil menetapkan siklus hidup bucket:%#v\n", result)
}

Gunakan alat baris perintah ossutil

Anda dapat menggunakan alat baris perintah ossutil untuk menetapkan aturan siklus hidup. Untuk menginstal ossutil, lihat Instal ossutil.

Contoh berikut menunjukkan cara menetapkan informasi siklus hidup untuk bucket examplebucket.

ossutil api put-bucket-lifecycle --bucket examplebucket --lifecycle-configuration "{\"Rule\":{\"ID\":\"rule1\",\"Prefix\":\"tmp/\",\"Status\":\"Enabled\",\"Expiration\":{\"Days\":\"10\"},\"Transition\":{\"Days\":\"5\",\"StorageClass\":\"IA\"},\"AbortMultipartUpload\":{\"Days\":\"10\"}}}"

Untuk informasi lebih lanjut tentang perintah ini, lihat put-bucket-lifecycle.

API Terkait

Metode di atas didasarkan pada operasi API. Jika program Anda memiliki persyaratan yang sangat disesuaikan, Anda dapat langsung membuat permintaan REST API. Untuk membuat permintaan REST API secara langsung, Anda perlu menulis kode secara manual untuk menghitung tanda tangan. Untuk informasi lebih lanjut, lihat PutBucketLifecycle.

FAQ

Apa yang harus saya lakukan jika muncul kesalahan Set bucket lifecycle error, InvalidArgument, Days in the Transition action for StorageClass Archive must be more than the Transition action for StorageClass IA?

Kesalahan ini terjadi karena waktu transisi untuk kelas penyimpanan berbeda tidak memenuhi persyaratan. Periode transisi yang dikonfigurasi untuk sebuah bucket harus mengikuti urutan ini: Infrequent Access < Archive < Cold Archive < Deep Cold Archive.

Apakah aturan siklus hidup berlaku untuk objek yang sudah ada dalam bucket?

Ya. Aturan siklus hidup berlaku untuk objek yang sudah ada dalam bucket sebelum aturan dikonfigurasi maupun objek baru yang diunggah setelah aturan dikonfigurasi. Misalnya, jika Anda mengonfigurasi aturan pada 7 Oktober untuk menghapus objek setelah 30 hari, objek yang diunggah pada 5 Oktober akan dihapus pada 6 November, dan objek yang diunggah pada 8 Oktober akan dihapus pada 9 November.

Bagaimana cara memodifikasi satu atau beberapa aturan siklus hidup?

Anggaplah bucket Anda memiliki dua aturan siklus hidup, Rule1 dan Rule2, dan Anda ingin memodifikasi item konfigurasi dalam Rule1. Karena operasi PutBucketLifecycle menimpa seluruh konfigurasi siklus hidup, Anda harus melakukan langkah-langkah berikut:

  1. Panggil API GetBucketLifecycle untuk mengambil semua aturan siklus hidup yang dikonfigurasi untuk bucket, yaitu Rule1 dan Rule2.

  2. Dalam konfigurasi lokal Anda, modifikasi pengaturan untuk Rule1.

  3. Panggil API PutBucketLifecycle dengan konfigurasi lengkap, termasuk Rule1 yang telah dimodifikasi dan Rule2 yang tidak berubah.

Bagaimana cara menghapus satu atau beberapa aturan siklus hidup?

Operasi DeleteBucketLifecycle menghapus semua aturan siklus hidup dari sebuah bucket. Jika Anda hanya ingin menghapus aturan tertentu, seperti Rule1 dari bucket yang berisi Rule1 dan Rule2, Anda harus melakukan langkah-langkah berikut:

  1. Panggil API GetBucketLifecycle untuk mengambil semua aturan siklus hidup yang dikonfigurasi untuk bucket, yaitu Rule1 dan Rule2.

  2. Dalam konfigurasi lokal Anda, hapus Rule1.

  3. Panggil API PutBucketLifecycle dengan konfigurasi yang tersisa, yaitu hanya Rule2.

Apakah log dicatat untuk transisi kelas penyimpanan dan kedaluwarsa objek yang dilakukan oleh aturan siklus hidup?

Ya. Semua transisi kelas penyimpanan dan kedaluwarsa yang berhasil yang dilakukan oleh aturan siklus hidup dicatat. Field log adalah sebagai berikut:

  • Operasi

    • CommitTransition: Melakukan transisi kelas penyimpanan.

    • ExpireObject: Menghapus objek yang kedaluwarsa.

  • Permintaan Sinkron

    Nilainya adalah lifecycle untuk operasi transisi dan penghapusan yang dipicu oleh aturan siklus hidup.

Untuk informasi lebih lanjut tentang field log OSS, lihat Field log. Untuk informasi lebih lanjut tentang penagihan untuk kueri log, lihat Penagihan.

Dapatkah saya membuat satu aturan siklus hidup untuk membersihkan penanda hapus dan menghapus objek versi saat ini sekaligus?

Tidak. Anda harus membuat satu aturan untuk membersihkan penanda hapus dan aturan terpisah untuk menghapus objek versi saat ini.

Apakah aturan siklus hidup berdasarkan waktu modifikasi terakhir mendukung transisi objek dari kelas penyimpanan Infrequent Access ke kelas penyimpanan Standard?

Tidak. Anda dapat melakukan transisi objek dari kelas penyimpanan Infrequent Access ke kelas penyimpanan Standard dengan cara berikut:

  • Menggunakan operasi CopyObject

    API CopyObject mendukung transisi satu objek dari kelas penyimpanan Infrequent Access ke kelas penyimpanan Standard.

  • Menggunakan alat ossutil

    ossutil mendukung penggunaan perintah set-meta dengan opsi X-Oss-Storage-Class untuk melakukan transisi satu atau beberapa objek dari kelas penyimpanan Infrequent Access ke kelas penyimpanan Standard. Untuk informasi lebih lanjut, lihat Tetapkan atau perbarui metadata.

Referensi

  • Secara default, OSS menetapkan waktu modifikasi terakhir objek ke waktu unggahnya. Melakukan transisi kelas penyimpanan file menggunakan aturan siklus hidup tidak memperbarui waktu modifikasi terakhir objek. Untuk informasi lebih lanjut tentang operasi mana yang memperbarui waktu LastModified objek, lihat Operasi mana yang memperbarui waktu LastModified objek?.

  • Ketika objek Infrequent Access, Archive, Cold Archive, atau Deep Cold Archive ditransisikan ke kelas penyimpanan lain atau dihapus sebelum disimpan selama durasi minimum yang diperlukan, biaya untuk durasi penyimpanan yang tidak mencukupi akan dikenakan. Untuk informasi lebih lanjut, lihat Bagaimana biaya dihitung jika objek disimpan kurang dari durasi minimum yang diperlukan?.

  • Aturan siklus hidup hanya mendukung transisi atau penghapusan data secara batch untuk seluruh bucket atau untuk data yang cocok dengan awalan. Jika Anda ingin menghapus data secara batch dengan akhiran tertentu, Anda dapat menggunakan perintah ossutil rm.

  • Jika Anda ingin OSS secara otomatis memantau pola akses data Anda, mengidentifikasi data dingin, lalu melakukan transisi kelas penyimpanannya untuk mengurangi biaya penyimpanan, konfigurasikan aturan siklus hidup berdasarkan waktu akses terakhir.

  • Jika Anda ingin melihat kelas penyimpanan semua objek dalam sebuah bucket, lihat Daftar objek.