Tidak semua data yang diunggah ke Object Storage Service (OSS) memerlukan akses yang sering. Untuk kepatuhan atau arsip, sebagian data harus disimpan dalam kelas penyimpanan cold. Bergantung pada skenario bisnis Anda, Anda juga dapat menghapus data secara batch yang tidak perlu lagi disimpan di bucket. Untuk mengurangi biaya penyimpanan, Anda dapat mengonfigurasi aturan lifecycle berdasarkan waktu modifikasi terakhir objek. Aturan ini secara berkala dapat memindahkan objek dari kelas penyimpanan hot ke kelas penyimpanan cold atau menghapusnya.
Catatan
-
Sebelum mengonfigurasi aturan lifecycle berdasarkan waktu modifikasi terakhir objek, pastikan Anda memahami fitur ini terlebih dahulu. Untuk informasi selengkapnya, lihat Lifecycle rules based on the last modified time.
-
Pada topik ini, digunakan titik akhir publik untuk wilayah China (Hangzhou). Untuk mengakses OSS dari layanan Alibaba Cloud lainnya dalam wilayah yang sama, gunakan titik akhir internal. Untuk detail wilayah dan titik akhir yang didukung, lihat Regions and endpoints.
-
Topik ini menunjukkan cara membuat instans OSSClient dengan titik akhir OSS. Untuk konfigurasi alternatif, seperti penggunaan domain kustom atau autentikasi dengan kredensial dari Security Token Service (STS), lihat Create an OssClient.
-
Untuk mengatur aturan lifecycle, Anda harus memiliki izin
oss:PutBucketLifecycle. Untuk melihat aturan lifecycle, Anda harus memiliki izinoss:GetBucketLifecycle. Untuk menghapus semua aturan lifecycle, Anda harus memiliki izinoss:DeleteBucketLifecycle. Untuk informasi selengkapnya, lihat Grant custom access policies to a RAM user.
Atur aturan lifecycle
Kode berikut memberikan contoh cara mengatur aturan lifecycle untuk bucket examplebucket berdasarkan waktu modifikasi terakhir. Setelah aturan ditetapkan, jika Anda ingin mengubah satu atau beberapa aturan tersebut, lihat How do I modify the configuration of one or more lifecycle rules?.
<?php
if (is_file(__DIR__ . '/../autoload.php')) {
require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
require_once __DIR__ . '/../vendor/autoload.php';
}
use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;
use OSS\CoreOssException;
use OSS\Model\LifecycleConfig;
use OSS\Model\LifecycleRule;
use OSS\Model\LifecycleAction;
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
$provider = new EnvironmentVariableCredentialsProvider();
// Titik akhir China (Hangzhou) digunakan sebagai contoh. Ganti dengan titik akhir aktual untuk wilayah Anda.
$endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Masukkan nama bucket.
$bucket= "examplebucket";
// Atur ID aturan dan awalan file.
$ruleId0 = "rule0";
$matchPrefix0 = "A0/";
$ruleId1 = "rule1";
$matchPrefix1 = "A1/";
$lifecycleConfig = new LifecycleConfig();
$actions = array();
// Hapus objek 3 hari setelah waktu modifikasi terakhirnya.
$actions[] = new LifecycleAction(OssClient::OSS_LIFECYCLE_EXPIRATION, OssClient::OSS_LIFECYCLE_TIMING_DAYS, 3);
$lifecycleRule = new LifecycleRule($ruleId0, $matchPrefix0, "Enabled", $actions);
$lifecycleConfig->addRule($lifecycleRule);
$actions = array();
// Hapus objek yang dibuat sebelum tanggal tertentu.
$actions[] = new LifecycleAction(OssClient::OSS_LIFECYCLE_EXPIRATION, OssClient::OSS_LIFECYCLE_TIMING_DATE, '2022-10-12T00:00:00.000Z');
$lifecycleRule = new LifecycleRule($ruleId1, $matchPrefix1, "Enabled", $actions);
$lifecycleConfig->addRule($lifecycleRule);
try {
$config = array(
"provider" => $provider,
"endpoint" => $endpoint,
"signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
"region"=> "cn-hangzhou"
);
$ossClient = new OssClient($config);
$ossClient->putBucketLifecycle($bucket, $lifecycleConfig);
} catch (OssException $e) {
printf(__FUNCTION__ . ": FAILED\n");
printf($e->getMessage() . "\n");
return;
}
print(__FUNCTION__ . ": OK" . "\n");
Lihat aturan lifecycle
Kode berikut memberikan contoh cara melihat aturan lifecycle bucket examplebucket:
<?php
if (is_file(__DIR__ . '/../autoload.php')) {
require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
require_once __DIR__ . '/../vendor/autoload.php';
}
use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;
use OSS\CoreOssException;
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
$provider = new EnvironmentVariableCredentialsProvider();
// Titik akhir China (Hangzhou) digunakan sebagai contoh. Ganti dengan titik akhir aktual untuk wilayah Anda.
$endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Masukkan nama bucket.
$bucket= "examplebucket";
$lifecycleConfig = null;
try{
$config = array(
"provider" => $provider,
"endpoint" => $endpoint,
"signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
"region"=> "cn-hangzhou"
);
$ossClient = new OssClient($config);
$lifecycleConfig = $ossClient->getBucketLifecycle($bucket);
} catch(OssException $e) {
printf(__FUNCTION__ . ": FAILED\n");
printf($e->getMessage() . "\n");
return;
}
print(__FUNCTION__ . ": OK" . "\n");
print($lifecycleConfig->serializeToXml() . "\n");
Hapus semua aturan lifecycle
Kode berikut memberikan contoh cara menghapus semua aturan lifecycle untuk bucket examplebucket. Untuk menghapus satu atau beberapa aturan lifecycle tertentu, lihat How do I delete one or more lifecycle rules?.
<?php
if (is_file(__DIR__ . '/../autoload.php')) {
require_once __DIR__ . '/../autoload.php';
}
if (is_file(__DIR__ . '/../vendor/autoload.php')) {
require_once __DIR__ . '/../vendor/autoload.php';
}
use OSS\Credentials\EnvironmentVariableCredentialsProvider;
use OSS\OssClient;
use OSS\CoreOssException;
// Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
$provider = new EnvironmentVariableCredentialsProvider();
// Titik akhir China (Hangzhou) digunakan sebagai contoh. Ganti dengan titik akhir aktual untuk wilayah Anda.
$endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Masukkan nama bucket.
$bucket= "examplebucket";
try{
$config = array(
"provider" => $provider,
"endpoint" => $endpoint,
"signatureVersion" => OssClient::OSS_SIGNATURE_VERSION_V4,
"region"=> "cn-hangzhou"
);
$ossClient = new OssClient($config);
$ossClient->deleteBucketLifecycle($bucket);
} catch(OssException $e) {
printf(__FUNCTION__ . ": FAILED\n");
printf($e->getMessage() . "\n");
return;
}
print(__FUNCTION__ . ": OK" . "\n");
Referensi
-
Untuk kode contoh lengkap tentang manajemen lifecycle, lihat contoh di GitHub.
-
Untuk informasi tentang operasi API untuk mengatur aturan lifecycle, lihat PutBucketLifecycle.
-
Untuk informasi tentang operasi API untuk melihat aturan lifecycle, lihat GetBucketLifecycle.
-
Untuk informasi tentang operasi API untuk menghapus semua aturan lifecycle, lihat DeleteBucketLifecycle.