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:
Create — Tetapkan periode retensi. Kebijakan dimulai dalam keadaan unlocked, sehingga masih dapat dibatalkan.
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.
Query — Ambil konfigurasi dan status kebijakan saat ini kapan saja.
Extend — Tingkatkan periode retensi kebijakan yang telah dikunci.
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);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.
Mengunci kebijakan bersifat ireversibel. Pastikan periode retensi sudah benar sebelum mengunci.
Parameter wajib:
| Parameter | Tipe | Deskripsi |
|---|---|---|
bucket | string | Bucket yang kebijakannya akan dikunci. |
wormId | string | ID 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:
| Parameter | Tipe | Deskripsi |
|---|---|---|
bucket | string | Bucket 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.
Referensi
InitiateBucketWorm — Buat kebijakan retensi
CompleteBucketWorm — Kunci kebijakan retensi
AbortBucketWorm — Batalkan kebijakan retensi yang belum dikunci
GetBucketWorm — Kueri kebijakan retensi
ExtendBucketWorm — Perpanjang periode retensi kebijakan retensi