全部产品
Search
文档中心

Object Storage Service:Lifecycle (PHP SDK V1)

更新时间:Nov 30, 2025

Tidak semua data yang diunggah ke Object Storage Service (OSS) memerlukan akses yang sering. Untuk kepatuhan atau keperluan arsip, sebagian data harus disimpan dalam kelas penyimpanan cold storage. Anda juga dapat menghapus data dari bucket secara batch jika data tersebut tidak lagi diperlukan. Untuk mengurangi biaya penyimpanan, Anda dapat mengonfigurasi aturan lifecycle berdasarkan waktu modifikasi terakhir objek. Aturan ini secara berkala dapat memindahkan objek ke kelas penyimpanan yang lebih dingin atau menghapusnya.

Catatan

  • Pada topik ini, digunakan titik akhir publik 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.

  • Pada topik ini, instans OSSClient dibuat menggunakan titik akhir OSS. Jika Anda ingin membuat instans OSSClient menggunakan nama domain kustom atau Security Token Service (STS), lihat Create an OssClient.

  • Untuk menetapkan aturan lifecycle, Anda harus memiliki izin oss:PutBucketLifecycle. Untuk melihat aturan lifecycle, Anda harus memiliki izin oss:GetBucketLifecycle. Untuk menghapus semua aturan lifecycle, Anda harus memiliki izin oss:DeleteBucketLifecycle. Untuk informasi selengkapnya, lihat Grant custom access policies to a RAM user.

Tetapkan aturan lifecycle

Kode berikut memberikan contoh cara menetapkan 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. Gantilah dengan titik akhir aktual untuk wilayah Anda.
$endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
// Masukkan nama bucket.
$bucket= "examplebucket";

// Tetapkan 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. Gantilah 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. Gantilah 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 mengenai manajemen lifecycle, lihat contoh di GitHub.

  • Untuk informasi mengenai operasi API untuk menetapkan aturan lifecycle, lihat PutBucketLifecycle.

  • Untuk informasi mengenai operasi API untuk melihat aturan lifecycle, lihat GetBucketLifecycle.

  • Untuk informasi mengenai operasi API untuk menghapus semua aturan lifecycle, lihat DeleteBucketLifecycle.