All Products
Search
Document Center

Object Storage Service:Kebijakan retensi menggunakan OSS SDK untuk PHP 2.0

Last Updated:Mar 21, 2026

Gunakan Object Storage Service (OSS) SDK untuk PHP 2.0 untuk mengelola kebijakan retensi berbasis waktu pada bucket OSS. Kebijakan retensi menerapkan batasan Write Once Read Many (WORM): objek dalam bucket tidak dapat dihapus atau ditimpa hingga periode retensi berakhir. Periode retensi berkisar antara 1 hari hingga 70 tahun.

Topik ini mencakup cara membuat, mengunci, mengkueri, memperpanjang, dan membatalkan kebijakan retensi.

Cara kerja

Kebijakan retensi tingkat bucket mengikuti siklus hidup berikut:

  1. Create — Tetapkan periode retensi. Kebijakan dimulai dalam keadaan unlocked, sehingga masih dapat dibatalkan.

  2. Lock — Kunci kebijakan agar menjadi permanen dan sesuai standar compliance. Kebijakan yang terkunci tidak dapat dihapus, dan periode retensi hanya dapat diperpanjang, tidak pernah dipersingkat.

  3. Query — Ambil konfigurasi dan status kebijakan saat ini kapan saja.

  4. Extend — Tingkatkan periode retensi kebijakan yang telah dikunci.

  5. Cancel — Batalkan kebijakan selama masih dalam keadaan unlocked.

Catatan penggunaan

  • Kode contoh menggunakan ID wilayah cn-hangzhou (China (Hangzhou)). Secara default, titik akhir publik digunakan. Untuk mengakses OSS dari layanan Alibaba Cloud lainnya dalam wilayah yang sama, gunakan titik akhir internal. Untuk detailnya, lihat Wilayah dan titik akhir.

  • Kredensial akses dimuat dari variabel lingkungan. Untuk petunjuk penyiapan, lihat Konfigurasikan kredensial akses.

Prasyarat

Sebelum memulai, pastikan Anda telah memiliki:

  • Bucket OSS

  • OSS SDK untuk PHP 2.0 terinstal (AlibabaCloud\Oss\V2)

  • ID AccessKey dan Rahasia AccessKey Anda disetel sebagai variabel lingkungan

Persiapan client

Semua contoh menggunakan inisialisasi client yang sama. Jalankan blok ini sekali sebelum memanggil operasi apa pun.

<?php

require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// Parse argumen command-line.
$optsdesc = [
    "region"   => ['help' => 'Wilayah tempat bucket berada.', 'required' => true],
    "endpoint" => ['help' => 'Titik akhir kustom (opsional).', 'required' => false],
    "bucket"   => ['help' => 'Nama bucket.', 'required' => true],
];

$longopts = array_map(fn($key) => "$key:", array_keys($optsdesc));
$options  = getopt("", $longopts);

foreach ($optsdesc as $key => $meta) {
    if ($meta['required'] && empty($options[$key])) {
        echo "Error: --$key wajib diisi. {$meta['help']}\n";
        exit(1);
    }
}

$region = $options['region'];
$bucket = $options['bucket'];

// Muat kredensial dari variabel lingkungan.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

// Inisialisasi client.
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider);
$cfg->setRegion($region);

if (isset($options['endpoint'])) {
    $cfg->setEndpoint($options['endpoint']);
}

$client = new Oss\Client($cfg);

Buat kebijakan retensi

Panggil initiateBucketWorm untuk membuat kebijakan retensi. Kebijakan dimulai dalam keadaan unlocked dengan periode retensi yang ditentukan.

Parameter wajib:

ParameterTipeDeskripsi
bucketstringBucket tempat kebijakan diterapkan.
retentionPeriodInDaysintPeriode retensi dalam hari. Rentang valid: 1–25.550 (sekitar 70 tahun).
// Buat InitiateBucketWormRequest dengan periode retensi 3 hari.
$request = new Oss\Models\InitiateBucketWormRequest(
    bucket: $bucket,
    initiateWormConfiguration: new Oss\Models\InitiateWormConfiguration(
        retentionPeriodInDays: 3
    )
);

$result = $client->initiateBucketWorm($request);

printf(
    "status code: %s\n" .
    "request ID: %s\n" .
    "WORM ID: %s\n",
    $result->statusCode,
    $result->requestId,
    $result->wormId
);

Simpan wormId yang dikembalikan—Anda memerlukannya untuk mengunci atau memperpanjang kebijakan.

Kunci kebijakan retensi

Panggil completeBucketWorm untuk mengunci kebijakan. Setelah dikunci, kebijakan menjadi permanen dan sesuai standar compliance. Kebijakan yang terkunci tidak dapat dibatalkan, dan periode retensi hanya dapat diperpanjang.

Penting

Mengunci kebijakan bersifat ireversibel. Pastikan periode retensi sudah benar sebelum mengunci.

Parameter wajib:

ParameterTipeDeskripsi
bucketstringBucket yang kebijakannya akan dikunci.
wormIdstringID WORM yang dikembalikan saat kebijakan dibuat.
// Tambahkan --worm-id ke daftar argumen.
$optsdesc['worm-id'] = ['help' => 'ID WORM dari kebijakan retensi.', 'required' => true];
$wormId = $options['worm-id'];

$request = new Oss\Models\CompleteBucketWormRequest(
    bucket: $bucket,
    wormId: $wormId
);

$result = $client->completeBucketWorm($request);

printf(
    "status code: %s\n" .
    "request ID: %s\n",
    $result->statusCode,
    $result->requestId
);

Untuk spesifikasi API, lihat CompleteBucketWorm.

Kueri kebijakan retensi

Panggil getBucketWorm untuk mengambil konfigurasi dan status kebijakan saat ini.

Parameter wajib:

ParameterTipeDeskripsi
bucketstringBucket yang akan dikueri.
$request = new Oss\Models\GetBucketWormRequest(bucket: $bucket);

$result = $client->getBucketWorm($request);

printf(
    "status code: %s\n" .
    "request ID: %s\n" .
    "Konfigurasi WORM: %s\n",
    $result->statusCode,
    $result->requestId,
    var_export($result->wormConfiguration, true)
);

wormConfiguration yang dikembalikan berisi status kebijakan (locked atau unlocked), ID WORM, dan periode retensi.

Perpanjang periode retensi

Panggil extendBucketWorm untuk meningkatkan periode retensi kebijakan yang terkunci. Nilai baru harus lebih besar daripada periode retensi saat ini—mempersingkat tidak diperbolehkan.

Parameter wajib:

ParameterTipeDeskripsi
bucketstringBucket yang kebijakannya akan diperpanjang.
wormIdstringID WORM yang dikembalikan saat kebijakan dibuat.
retentionPeriodInDaysintTotal periode retensi baru dalam hari. Harus lebih besar daripada nilai saat ini.
// Tambahkan --worm-id ke daftar argumen.
$optsdesc['worm-id'] = ['help' => 'ID WORM dari kebijakan retensi.', 'required' => true];
$wormId = $options['worm-id'];

// Tetapkan total periode retensi baru (harus lebih besar daripada periode saat ini).
$request = new Oss\Models\ExtendBucketWormRequest(
    bucket: $bucket,
    wormId: $wormId,
    extendWormConfiguration: new Oss\Models\ExtendWormConfiguration(
        retentionPeriodInDays: 3
    )
);

$result = $client->extendBucketWorm($request);

printf(
    "status code: %s\n" .
    "request ID: %s\n",
    $result->statusCode,
    $result->requestId
);

Batalkan kebijakan retensi yang belum dikunci

Panggil abortBucketWorm untuk membatalkan kebijakan retensi yang belum dikunci. Kebijakan yang telah dikunci tidak dapat dibatalkan.

Parameter wajib:

ParameterTipeDeskripsi
bucketstringBucket yang kebijakannya akan dibatalkan.
$request = new Oss\Models\AbortBucketWormRequest(bucket: $bucket);

$result = $client->abortBucketWorm($request);

printf(
    "status code: %s\n" .
    "request ID: %s\n",
    $result->statusCode,
    $result->requestId
);

Referensi