All Products
Search
Document Center

Object Storage Service:Kebijakan retensi tingkat bucket (BucketWorm)

Last Updated:Apr 22, 2026

Kebijakan retensi tingkat bucket OSS, juga dikenal sebagai BucketWorm, menyediakan model Write Once, Read Many (WORM) untuk penyimpanan data. Kebijakan ini menjadikan objek immutable sehingga mencegah penghapusan atau modifikasi oleh siapa pun, termasuk pemilik bucket, selama periode tertentu. Selama periode retensi, Anda hanya dapat mengunggah dan membaca objek. Objek hanya dapat dimodifikasi atau dihapus setelah periode retensi berakhir.

Kasus penggunaan

Fitur WORM pada kebijakan retensi OSS membantu Anda memenuhi persyaratan regulasi dan kepatuhan dari lembaga seperti U.S. Securities and Exchange Commission (SEC) dan Financial Industry Regulatory Authority (FINRA). Fitur ini cocok untuk sektor-sektor seperti keuangan, asuransi, kesehatan, dan sekuritas, serta untuk skenario seperti arsip kepatuhan dan audit log data.

Catatan

OSS telah terakreditasi oleh Cohasset Associates dan memenuhi persyaratan ketat untuk retensi catatan elektronik, seperti SEC Rule 17a-4(f), FINRA Rule 4511, dan Commodity Futures Trading Commission (CFTC) Rule 1.31. Untuk informasi lebih lanjut, lihat Laporan Penilaian Cohasset OSS.

Prasyarat

Pengendalian versi harus diaktifkan atau dinonaktifkan untuk bucket; statusnya tidak boleh suspended. Untuk informasi lebih lanjut tentang pengendalian versi, lihat Versioning.

Catatan penggunaan

  • Anda tidak dapat mengaktifkan OSS-HDFS dan mengonfigurasi kebijakan retensi tingkat bucket untuk bucket yang sama.

  • Selama periode retensi, Anda dapat mengonfigurasi aturan siklus hidup untuk memindahkan objek ke kelas penyimpanan yang berbeda, sehingga mengurangi biaya penyimpanan sambil tetap memenuhi kepatuhan.

  • Kebijakan retensi tingkat bucket (BucketWorm) dan kebijakan retensi tingkat objek (ObjectWorm) bersifat saling eksklusif. Anda tidak dapat mengaktifkan kedua jenis kebijakan retensi tersebut untuk bucket yang sama. Jika kebijakan retensi tingkat bucket diaktifkan untuk suatu bucket, Anda tidak dapat mengaktifkan kebijakan retensi tingkat objek, dan sebaliknya.

Cara kerja

  • Aturan aktivasi

    Saat Anda membuat kebijakan retensi berbasis waktu, kebijakan tersebut masuk ke status InProgress selama 24 jam. Selama periode ini, sumber daya bucket dilindungi.

    • Dalam 24 jam setelah Anda membuat kebijakan retensi:

      • Jika kebijakan retensi belum dikunci, pemilik bucket dan pengguna yang berwenang dapat menghapus kebijakan tersebut.

      • Setelah dikunci, kebijakan tidak dapat dihapus, dan periode retensinya tidak dapat dipersingkat. Namun, Anda dapat memperpanjang periode retensi. Data dalam bucket dilindungi. Jika Anda mencoba menghapus atau memodifikasi data, OSS akan mengembalikan pesan error 409 FileImmutable.

    • Lebih dari 24 jam setelah Anda membuat kebijakan retensi:

      Jika tidak dikunci dalam waktu 24 jam, kebijakan tersebut kedaluwarsa secara otomatis, dan Anda kemudian dapat menghapusnya.

  • Aturan penghapusan

    • Kebijakan retensi berbasis waktu merupakan atribut metadata dari suatu bucket. Menghapus bucket juga akan menghapus kebijakan retensinya.

    • Jika kebijakan retensi tidak dikunci dalam waktu 24 jam setelah dibuat, pemilik bucket dan pengguna yang berwenang dapat menghapus kebijakan tersebut.

    • Jika bucket berisi objek yang masih dalam periode retensinya, Anda tidak dapat menghapus kebijakan retensi maupun bucket tersebut.

  • Contoh

    Misalnya, jika Anda membuat dan mengunci kebijakan retensi 30 hari untuk suatu bucket pada 1 Juni 2022, lalu mengunggah tiga objek—file1.txt, file2.txt, dan file3.txt—pada waktu yang berbeda, tabel berikut menampilkan tanggal unggah dan tanggal kedaluwarsa objek-objek tersebut.

    Nama objek

    Waktu unggah

    Waktu kedaluwarsa

    file1.txt

    1 April 2022

    30 April 2022

    file2.txt

    1 Juni 2022

    30 Juni 2022

    file3.txt

    1 September 2022

    30 September 2022

Prosedur

Konsol OSS

  1. Buat kebijakan retensi.

    1. Masuk ke Konsol OSS.

    2. Di panel navigasi kiri, klik Buckets. Pada halaman Buckets, klik nama bucket target.

    3. Di panel navigasi kiri, pilih Content Security > Bucket-Level Retention Policy.

    4. Pada halaman Retention Policy, klik Create Policy.

    5. Pada kotak dialog Create Policy, tentukan Retention Period.

      Catatan

      Periode retensi diukur dalam satuan hari. Nilai yang valid: 1 hingga 25.550.

    6. Klik OK.

      Catatan

      Kebijakan masuk ke status InProgress selama 24 jam, di mana sumber daya bucket dilindungi. Anda dapat menghapus kebijakan tersebut dalam jendela waktu ini jika memutuskan untuk tidak menyimpannya.

  2. Kunci kebijakan retensi.

    1. Klik Lock.

    2. Pada kotak dialog yang muncul, klik OK.

      Penting

      Setelah dikunci, kebijakan retensi tidak dapat dimodifikasi atau dihapus, dan Anda tidak dapat memodifikasi atau menghapus data dalam bucket selama periode retensi.

  3. (Opsional) Modifikasi periode retensi.

    1. Klik Edit.

    2. Pada kotak dialog yang muncul, modifikasi periode retensi.

      Penting

      Anda hanya dapat memperpanjang periode retensi. Anda tidak dapat mempersingkatnya.

Alibaba Cloud SDKs

Kode contoh berikut menunjukkan cara mengonfigurasi kebijakan retensi menggunakan SDK umum. Untuk contoh SDK lainnya, lihat SDK overview.

Java

import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.InitiateBucketWormRequest;
import com.aliyun.oss.model.InitiateBucketWormResult;

public class Demo {

    public static void main(String[] args) throws Exception {
        // Dalam contoh ini, digunakan endpoint wilayah China (Hangzhou). Tentukan endpoint aktual Anda. 
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // Peroleh 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), atur region ke 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 objek InitiateBucketWormRequest. 
            InitiateBucketWormRequest initiateBucketWormRequest = new InitiateBucketWormRequest(bucketName);
            // Atur periode retensi menjadi 1 hari. 
            initiateBucketWormRequest.setRetentionPeriodInDays(1);

            // Buat kebijakan retensi. 
            InitiateBucketWormResult initiateBucketWormResult = ossClient.initiateBucketWorm(initiateBucketWormRequest);

            // Tampilkan ID kebijakan retensi. 
            String wormId = initiateBucketWormResult.getWormId();
            System.out.println(wormId);
        } catch (OSSException oe) {
            System.out.println("Terjadi OSSException, yang berarti permintaan Anda sampai ke OSS, "
                    + "tetapi ditolak dengan respons error karena suatu alasan.");
            System.out.println("Pesan Error:" + oe.getErrorMessage());
            System.out.println("Kode Error:" + oe.getErrorCode());
            System.out.println("ID Permintaan:" + oe.getRequestId());
            System.out.println("Host ID:" + 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 Error:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}

PHP

<?php

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

use AlibabaCloud\Oss\V2 as Oss;

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

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

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

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

// Ambil nilai argumen baris perintah.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.

// Muat informasi kredensial, seperti ID AccessKey dan Rahasia AccessKey, dari variabel lingkungan.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

// Gunakan konfigurasi default kit pengembangan perangkat lunak (SDK).
$cfg = Oss\Config::loadDefault();

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

// Atur wilayah.
$cfg->setRegion($region);

// Jika endpoint disediakan, atur endpoint.
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]);
}

// Buat instance klien OSS.
$client = new Oss\Client($cfg);

// Buat objek permintaan untuk menginisialisasi kebijakan retensi bucket. Atur periode retensi menjadi 3 hari.
$request = new Oss\Models\InitiateBucketWormRequest(
    bucket: $bucket, 
    initiateWormConfiguration: new Oss\Models\InitiateWormConfiguration(
        retentionPeriodInDays: 3 // Periode retensi dalam hari.
));

// Panggil metode initiateBucketWorm untuk menginisialisasi kebijakan retensi bucket.
$result = $client->initiateBucketWorm($request);

// Cetak hasil yang dikembalikan.
printf(
    'status code:' . $result->statusCode . PHP_EOL . // Kode status respons HTTP.
    'request id:' . $result->requestId . PHP_EOL . // ID unik permintaan.
    'worm id:' . $result->wormId // ID kebijakan retensi.
);

Node.js

const OSS = require('ali-oss');

const client = new OSS({
  // Atur region ke wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur region ke oss-cn-hangzhou.
  region: 'yourregion',
  // Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
  accessKeyId: process.env.OSS_ACCESS_KEY_ID,
  accessKeySecret: process.env.OSS_ACCESS_KEY_SECRET,  
  authorizationV4: true,
  // Atur bucket ke nama bucket Anda.
  bucket: 'yourBucketName',
});
// Buat kebijakan retensi data.
async function initiateBucketWorm() {
 // Atur bucket ke nama bucket Anda.
  const bucket = 'yourbucketname'
  // Tentukan periode retensi dalam hari.
  const days = '<Retention Days>'
    const res = await client.initiateBucketWorm(bucket, days)
  console.log(res.wormId)
}

initiateBucketWorm()

Python

import argparse
import alibabacloud_oss_v2 as oss

# Buat parser argumen baris perintah dan jelaskan tujuan skrip: Contoh ini menunjukkan cara menginisialisasi konfigurasi WORM untuk bucket OSS.
parser = argparse.ArgumentParser(description="initiate bucket worm sample")

# Tambahkan argumen baris perintah --region, yang menentukan wilayah bucket. 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')
# Tambahkan argumen baris perintah --retention_period_in_days, yang menentukan periode retensi dalam hari. Argumen ini wajib.
parser.add_argument('--retention_period_in_days', help='Jumlah hari objek dapat disimpan.', required=True)

def main():
    # Uraikan argumen baris perintah untuk mendapatkan nilai yang dimasukkan pengguna.
    args = parser.parse_args()

    # Muat kredensial akses untuk OSS dari variabel lingkungan untuk verifikasi identitas.
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # Buat objek konfigurasi menggunakan konfigurasi default SDK dan atur penyedia kredensial.
    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider
    cfg.region = args.region

    # Jika endpoint kustom disediakan, perbarui properti endpoint dalam objek konfigurasi.
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    # Inisialisasi klien OSS dengan konfigurasi untuk berinteraksi dengan OSS.
    client = oss.Client(cfg)

    # Kirim permintaan untuk menginisialisasi konfigurasi WORM untuk bucket yang ditentukan.
    result = client.initiate_bucket_worm(oss.InitiateBucketWormRequest(
        bucket=args.bucket,  # Nama bucket.
        initiate_worm_configuration=oss.InitiateWormConfiguration(
            retention_period_in_days=int(args.retention_period_in_days),  # Periode retensi dalam hari, dikonversi ke bilangan bulat.
        ),
    ))

    # Cetak kode status, ID permintaan, dan ID WORM operasi untuk mengonfirmasi status permintaan.
    print(f'status code: {result.status_code},'
          f' request id: {result.request_id},'
          f' worm id: {result.worm_id}'
    )

# Saat skrip ini dijalankan secara langsung, panggil fungsi main untuk memulai logika pemrosesan.
if __name__ == "__main__":
    main()  # Titik masuk skrip, tempat alur program dimulai.

Go

package main

import (
	"log"

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

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

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

	// Tentukan nama bucket tempat Anda ingin mengonfigurasi kebijakan retensi.
	bucketName := "<yourBucketName>"

	// Atur periode retensi objek menjadi 60 hari.
	result, err := client.InitiateBucketWorm(bucketName, 60)
	if err != nil {
		log.Fatalf("Error initiating bucket WORM: %v", err)
	}

	log.Println("Kebijakan WORM berhasil diinisialisasi:", result)
}

C++

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

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

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

      ClientConfiguration conf;
      conf.signatureVersion = SignatureVersionType::V4;
      /* Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur. */
    auto credentialsProvider = std::make_shared<EnvironmentVariableCredentialsProvider>();
    OssClient client(Endpoint, credentialsProvider, conf);
    client.SetRegion(Region);
  
      /* Buat kebijakan retensi data dan atur periode perlindungan objek menjadi 1 hari. */
      auto outcome = client.InitiateBucketWorm(InitiateBucketWormRequest(BucketName, 1));

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

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

ossutil

Anda dapat menggunakan tool baris perintah ossutil untuk membuat kebijakan WORM. Untuk informasi lebih lanjut tentang cara menginstal ossutil, lihat Install ossutil.

Perintah berikut membuat kebijakan WORM baru di bucket examplebucket dan mengatur periode retensi WORM menjadi 365 hari.

ossutil api initiate-bucket-worm --bucket examplebucket --initiate-worm-configuration "{\"RetentionPeriodInDays\":\"365\"}"

Untuk informasi lebih lanjut tentang perintah ini, lihat initiate-bucket-worm.

Referensi API

Prosedur di atas didasarkan pada operasi API. Untuk kustomisasi lanjutan, Anda dapat membuat permintaan REST API langsung, yang mengharuskan Anda menulis kode secara manual untuk menghitung signature. Untuk informasi lebih lanjut, lihat InitiateBucketWorm.

Bekerja dengan versioning

Untuk kasus penggunaan seperti melindungi cadangan data untuk sistem seperti Veeam, melacak riwayat modifikasi aset, atau memenuhi persyaratan kepatuhan keuangan, Anda sering kali perlu mengizinkan pembaruan data kontinu sekaligus memastikan semua versi historis bersifat immutable dan tidak dapat dihapus. Untuk mencapai hal ini, Anda dapat mengaktifkan kebijakan retensi dan versioning pada bucket yang sama. Versioning memastikan bahwa ketika suatu objek ditimpa atau dihapus, versi lamanya tetap disimpan sebagai versi historis alih-alih dihapus permanen. Kebijakan retensi kemudian menerapkan periode retensi ke semua versi objek dalam bucket, sehingga menjadikannya tidak dapat diubah dan tidak dapat dihapus selama periode tersebut.

Saat versioning dan kebijakan retensi digunakan bersama, prinsip-prinsip berikut berlaku:

  • Urutan pengaktifan fitur: Tidak ada batasan urutan pengaktifan versioning dan kebijakan retensi. Anda dapat mengonfigurasinya secara fleksibel sesuai kebutuhan bisnis Anda.

  • Batasan transisi status:

    • Setelah kebijakan retensi diaktifkan, Anda tidak dapat mengubah status versioning dari enabled ke suspended.

    • Anda dapat mengaktifkan kebijakan retensi untuk bucket yang status versioning-nya suspended. Setelah kebijakan diaktifkan, Anda dapat mengubah status versioning menjadi enabled.

  • Perlindungan versi objek:

    • Kebijakan retensi melindungi semua versi objek. Tidak ada versi yang dapat dihapus atau dimodifikasi selama periode retensi.

    • Anda dapat mengunggah objek dengan nama yang sama untuk membuat versi baru. Versi baru tersebut juga dilindungi oleh kebijakan retensi.

    • Kebijakan retensi tidak melindungi penanda hapus (delete marker), sehingga penghapusannya tidak dibatasi oleh kebijakan tersebut.

  • Sinergi replikasi data:

    • Bucket sumber dan tujuan mendukung konfigurasi independen untuk versioning dan kebijakan retensi.

    • Informasi versi ditransmisikan secara normal selama replikasi. Bucket tujuan mengelola versi berdasarkan konfigurasinya sendiri.

    • Menghapus versi di bucket sumber tidak disinkronkan ke bucket tujuan yang memiliki kebijakan retensi yang diaktifkan.

FAQ

Penghapusan objek dengan versioning

Saat kebijakan retensi dan versioning diaktifkan bersamaan, penghapusan objek memiliki efek berikut:

  • Operasi penghapusan membuat penanda hapus (delete marker) tetapi tidak menghapus fisik versi historis objek.

  • Kebijakan retensi tidak melindungi penanda hapus, yang dapat dihapus secara normal.

  • Semua versi objek tidak dapat dihapus selama periode retensi, bahkan jika penanda hapus ada.

  • Manajemen siklus hidup dapat membersihkan penanda hapus yang menggantung tetapi tidak dapat menghapus versi objek yang dilindungi oleh kebijakan retensi.

Modifikasi status versioning

Setelah kebijakan retensi diaktifkan, batasan berikut berlaku untuk memodifikasi status versioning:

  • Enabled ke suspended: Jika status versioning adalah enabled, Anda tidak dapat mengubahnya menjadi suspended setelah kebijakan retensi dikunci.

  • Suspended ke enabled: Jika status versioning adalah suspended, Anda masih dapat mengubahnya menjadi enabled setelah mengaktifkan kebijakan retensi.

  • Disabled ke enabled: Untuk bucket dengan versioning dinonaktifkan, Anda dapat mengaktifkan versioning setelah mengonfigurasi kebijakan retensi.

Biaya penyimpanan

Ya. Hal ini meningkatkan biaya penyimpanan dengan cara berikut:

  • Semua versi objek disimpan selama periode retensi dan tidak dapat dihapus oleh aturan siklus hidup.

  • Akumulasi versi dapat meningkatkan penggunaan penyimpanan secara signifikan, terutama untuk objek yang sering diperbarui.

  • Kami menyarankan Anda menetapkan periode retensi yang wajar dan menggunakan aturan siklus hidup untuk mengelola transisi kelas penyimpanan guna mengoptimalkan biaya.

Manfaat kebijakan retensi

Kebijakan retensi menyediakan penyimpanan yang compliant dan immutable. Sebaliknya, data yang hanya dilindungi oleh kebijakan RAM atau Bucket Policy masih dapat dimodifikasi atau dihapus.

Kapan menggunakan kebijakan retensi

Kami menyarankan mengaktifkan kebijakan retensi jika Anda perlu menyimpan data penting yang tidak dapat diubah dalam jangka panjang, seperti catatan medis, dokumen teknis, atau kontrak.

Menghapus kebijakan retensi

Apakah Anda dapat menghapus kebijakan retensi bergantung pada statusnya:

  • Belum dikunci: Pemilik bucket dan pengguna yang berwenang dapat menghapus kebijakan tersebut.

  • Telah dikunci: Tidak ada pengguna yang dapat menghapus kebijakan tersebut.

Kebijakan tingkat objek

Kebijakan retensi tingkat bucket (BucketWorm) yang dijelaskan dalam topik ini hanya berlaku untuk bucket, bukan untuk direktori atau objek individual. Jika Anda perlu mengonfigurasi kebijakan retensi terpisah untuk satu objek, gunakan kebijakan retensi tingkat objek (ObjectWorm). Perhatikan bahwa kebijakan retensi tingkat bucket dan kebijakan retensi tingkat objek bersifat saling eksklusif dan tidak dapat diaktifkan untuk bucket yang sama.

Menghitung waktu retensi

Waktu retensi objek dihitung dari waktu modifikasi terakhirnya ditambah periode retensi kebijakan. Misalnya, jika bucket memiliki kebijakan retensi 10 hari dan suatu objek dalam bucket tersebut terakhir dimodifikasi pada 15 Februari 2022, objek tersebut akan disimpan hingga 25 Februari 2022.

Menghapus bucket yang dilindungi

  • Jika bucket tidak berisi objek, Anda dapat langsung menghapusnya.

  • Jika bucket berisi objek yang periode retensinya telah berakhir, Anda harus menghapus semua objek sebelum menghapus bucket.

  • Jika bucket berisi objek yang masih dalam periode retensinya, Anda tidak dapat menghapus bucket tersebut.

Pembayaran yang tertunggak dan retensi data

Penting: Pembayaran akun yang tertunggak dapat menyebabkan penghapusan data oleh Alibaba Cloud berdasarkan aturan penangguhan layanan, bahkan untuk objek yang dilindungi oleh kebijakan retensi.

Otorisasi pengguna RAM

Ya. Pengguna RAM yang berwenang dapat mengelola kebijakan retensi melalui Konsol OSS, API, atau SDK karena fitur ini mendukung otorisasi melalui kebijakan RAM.