Topik ini menjelaskan cara menggunakan PHP SDK V2 untuk mengelola fitur siklus hidup bucket.
Informasi latar belakang
Di OSS, tidak semua data yang diunggah memerlukan akses yang sering. Namun, karena kepatuhan data atau persyaratan arsip, beberapa data masih perlu disimpan dalam penyimpanan dingin. Berdasarkan kebutuhan bisnis Anda, Anda dapat memilih:
Aturan Siklus Hidup Berdasarkan Waktu Modifikasi Terakhir: Ketika data tertentu tidak dimodifikasi untuk waktu yang lama dan tidak lagi perlu disimpan, Anda dapat menggunakan aturan ini untuk menghapusnya secara massal atau mengonversinya ke jenis penyimpanan dingin, sehingga membebaskan ruang penyimpanan.
Aturan Siklus Hidup Berdasarkan Waktu Akses Terakhir: Jika Anda ingin OSS secara otomatis memantau pola akses data untuk mengidentifikasi data dingin dan secara dinamis mengonversi jenis penyimpanan, Anda dapat mengaktifkan aturan ini. OSS akan secara otomatis mengidentifikasi data yang tidak diakses untuk waktu yang lama dan mengonversinya ke penyimpanan dingin yang lebih ekonomis, mencapai pengelompokan panas dan dingin serta mengurangi biaya penyimpanan.
Pertimbangan
Sebelum mengonfigurasi aturan siklus hidup berdasarkan waktu modifikasi terakhir atau waktu akses terakhir, pastikan Anda memahami fitur ini. Untuk informasi lebih lanjut, lihat Aturan Siklus Hidup Berdasarkan Waktu Modifikasi Terakhir dan Aturan Siklus Hidup Berdasarkan Waktu Akses Terakhir.
Kode contoh dalam topik ini menggunakan ID Wilayah China (Hangzhou)
cn-hangzhoudan titik akhir publiknya sebagai contoh. Jika Anda mengakses OSS dari layanan Alibaba Cloud lainnya di wilayah yang sama, gunakan titik akhir internal. Untuk informasi lebih lanjut tentang wilayah dan titik akhir yang didukung oleh OSS, lihat Wilayah dan Titik Akhir OSS.Untuk mengonfigurasi aturan siklus hidup, Anda harus memiliki izin
oss:PutBucketLifecycle. Untuk melihat aturan siklus hidup, Anda harus memiliki izinoss:GetBucketLifecycle. Untuk menghapus aturan siklus hidup, Anda harus memiliki izinoss:DeleteBucketLifecycle. Untuk informasi lebih lanjut, lihat Berikan Izin Kustom kepada Pengguna RAM.
Konfigurasikan aturan siklus hidup
Kode berikut memberikan contoh aturan siklus hidup yang dikonfigurasi berdasarkan waktu modifikasi terakhir dan waktu akses terakhir data. Setelah konfigurasi selesai, jika Anda ingin memodifikasi satu atau lebih aturan siklus hidup, lihat Bagaimana Cara Memodifikasi Satu atau Lebih Konfigurasi Aturan Siklus Hidup?.
Konfigurasikan aturan siklus hidup berdasarkan waktu modifikasi terakhir untuk mengubah kelas penyimpanan objek
Kode berikut memberikan contoh cara mengonfigurasi aturan siklus hidup berdasarkan waktu modifikasi terakhir untuk mengubah kelas penyimpanan objek dalam bucket.
<?php
// Sertakan file autoload untuk memuat dependensi
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
use AlibabaCloud\Oss\V2\Models\LifecycleConfiguration;
// Tentukan deskripsi untuk parameter baris perintah
$optsdesc = [
"region" => ['help' => 'Wilayah tempat bucket berada', 'required' => True], // (Diperlukan) Tentukan wilayah tempat bucket berada.
"endpoint" => ['help' => 'Nama domain yang dapat digunakan layanan lain untuk mengakses OSS', 'required' => False], // (Opsional) Tentukan titik akhir yang dapat digunakan layanan lain untuk mengakses OSS.
"bucket" => ['help' => 'Nama bucket', 'required' => True], // (Diperlukan) Tentukan nama bucket.
];
// Hasilkan daftar opsi panjang untuk mengurai parameter baris perintah
$longopts = \array_map(function ($key) {
return "$key:"; // Tambahkan titik dua setelah setiap parameter untuk menunjukkan bahwa nilai diperlukan
}, array_keys($optsdesc));
// Uraikan parameter baris perintah
$options = getopt("", $longopts);
// Periksa apakah parameter yang diperlukan hilang
foreach ($optsdesc as $key => $value) {
if ($value['required'] === True && empty($options[$key])) {
$help = $value['help'];
echo "Error: argumen berikut diperlukan: --$key, $help"; // Beri tahu pengguna tentang parameter yang diperlukan tetapi hilang
exit(1);
}
}
// Dapatkan nilai parameter baris perintah
$region = $options["region"]; // Wilayah tempat bucket berada
$bucket = $options["bucket"]; // Nama bucket
// Gunakan variabel lingkungan untuk memuat ID AccessKey dan Rahasia AccessKey
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
// Gunakan konfigurasi default dari SDK
$cfg = Oss\Config::loadDefault();
// Tentukan penyedia kredensial
$cfg->setCredentialsProvider($credentialsProvider);
// Tentukan wilayah
$cfg->setRegion($region);
// Tentukan titik akhir jika titik akhir diberikan
if (isset($options["endpoint"])) {
$cfg->setEndpoint($options["endpoint"]);
}
// Buat instance OSSClient
$client = new Oss\Client($cfg);
// Definisikan aturan siklus hidup untuk mengonversi objek yang namanya mengandung awalan log/ ke kelas penyimpanan IA setelah 30 hari
$lifecycleRule = new Oss\Models\LifecycleRule(
prefix: 'log/', // Awalan objek
transitions: array(
new Oss\Models\LifecycleRuleTransition(
days: 30, // Waktu konversi adalah 30 hari
storageClass: 'IA' // Kelas penyimpanan target adalah IA
)
),
id: 'rule', // ID aturan
status: 'Enabled' // Status aturan diaktifkan
);
// Buat objek konfigurasi siklus hidup dan tambahkan aturan siklus hidup
$lifecycleConfiguration = new LifecycleConfiguration(
rules: array($lifecycleRule)
);
// Buat objek permintaan untuk menetapkan siklus hidup bucket dan masukkan konfigurasi siklus hidup
$request = new Oss\Models\PutBucketLifecycleRequest(
bucket: $bucket,
lifecycleConfiguration: $lifecycleConfiguration
);
// Panggil metode putBucketLifecycle untuk menetapkan aturan siklus hidup untuk bucket
$result = $client->putBucketLifecycle($request);
// Tampilkan hasil yang dikembalikan
printf(
'status code:' . $result->statusCode . PHP_EOL . // Kode status respons HTTP
'request id:' . $result->requestId . PHP_EOL // Pengenal unik permintaan
);
Konfigurasikan aturan siklus hidup berdasarkan waktu modifikasi terakhir untuk mengonversi kelas penyimpanan objek, tidak termasuk objek yang namanya mengandung awalan tertentu atau memiliki tag tertentu
Kode berikut memberikan contoh cara menentukan bahwa objek dalam bucket, kecuali objek yang namanya mengandung awalan log, objek yang memiliki tag key1=value1, dan objek yang memenuhi persyaratan ukuran tertentu, dikonversi ke kelas penyimpanan IA 30 hari setelah modifikasi terakhir dan kedaluwarsa setelah 100 hari.
<?php
// Sertakan file autoload untuk memuat dependensi
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
use AlibabaCloud\Oss\V2\Models\LifecycleConfiguration;
// Tentukan deskripsi untuk parameter baris perintah
$optsdesc = [
"region" => ['help' => 'Wilayah tempat bucket berada', 'required' => True], // (Diperlukan) Tentukan wilayah tempat bucket berada.
"endpoint" => ['help' => 'Nama domain yang dapat digunakan layanan lain untuk mengakses OSS', 'required' => False], // (Opsional) Tentukan titik akhir yang dapat digunakan layanan lain untuk mengakses OSS.
"bucket" => ['help' => 'Nama bucket', 'required' => True], // (Diperlukan) Tentukan nama bucket.
];
// Hasilkan daftar opsi panjang untuk mengurai parameter baris perintah
$longopts = \array_map(function ($key) {
return "$key:"; // Tambahkan titik dua setelah setiap parameter untuk menunjukkan bahwa nilai diperlukan
}, array_keys($optsdesc));
// Uraikan parameter baris perintah
$options = getopt("", $longopts);
// Periksa apakah parameter yang diperlukan hilang
foreach ($optsdesc as $key => $value) {
if ($value['required'] === True && empty($options[$key])) {
$help = $value['help'];
echo "Error: argumen berikut diperlukan: --$key, $help"; // Beri tahu pengguna tentang parameter yang diperlukan tetapi hilang
exit(1);
}
}
// Dapatkan nilai parameter baris perintah
$region = $options["region"]; // Wilayah tempat bucket berada
$bucket = $options["bucket"]; // Nama bucket
// Gunakan variabel lingkungan untuk memuat ID AccessKey dan Rahasia AccessKey
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
// Gunakan konfigurasi default dari SDK
$cfg = Oss\Config::loadDefault();
// Tentukan penyedia kredensial
$cfg->setCredentialsProvider($credentialsProvider);
// Tentukan wilayah
$cfg->setRegion($region);
// Tentukan titik akhir jika titik akhir diberikan
if (isset($options["endpoint"])) {
$cfg->setEndpoint($options["endpoint"]);
}
// Buat instance OSSClient
$client = new Oss\Client($cfg);
// Definisikan aturan siklus hidup untuk mengonversi objek yang namanya mengandung awalan log/ ke kelas penyimpanan IA setelah 30 hari
$lifecycleRule = new Oss\Models\LifecycleRule(
id: 'rule', // ID aturan
status: 'Enabled', // Status aturan diaktifkan
prefix: 'logs', // Awalan objek
transitions: array(
new Oss\Models\LifecycleRuleTransition(
days: 30, // Waktu konversi adalah 30 hari
storageClass: 'IA', // Kelas penyimpanan target adalah IA
isAccessTime: false // Atur ke false, berdasarkan kebijakan waktu modifikasi terakhir
)
),
filter: new Oss\Models\LifecycleRuleFilter( // Definisikan kondisi filter
objectSizeGreaterThan: 500, // Atur lebih besar dari 500 byte
objectSizeLessThan: 1000, // Atur kurang dari 1000 byte
not: new Oss\Models\LifecycleRuleNot( // Definisikan kondisi pengecualian
prefix: 'logs/log', // Kecualikan objek dengan awalan log
tag: new Oss\Models\Tag( // Definisikan kondisi tag
key: 'key1',
value: 'value1'
)
)
),
expiration: new Oss\Models\LifecycleRuleExpiration(
days: 100 // Waktu kedaluwarsa adalah 100 hari
)
);
// Buat objek konfigurasi siklus hidup dan tambahkan aturan siklus hidup
$lifecycleConfiguration = new LifecycleConfiguration(
rules: array($lifecycleRule)
);
// Buat objek permintaan untuk menetapkan siklus hidup bucket dan masukkan konfigurasi siklus hidup
$request = new Oss\Models\PutBucketLifecycleRequest(
bucket: $bucket,
lifecycleConfiguration: $lifecycleConfiguration
);
// Panggil metode putBucketLifecycle untuk menetapkan aturan siklus hidup untuk bucket
$result = $client->putBucketLifecycle($request);
// Tampilkan hasil yang dikembalikan
printf(
'status code:' . $result->statusCode . PHP_EOL . // Kode status respons HTTP
'request id:' . $result->requestId . PHP_EOL // Pengenal unik permintaan
);
Konfigurasikan aturan siklus hidup berdasarkan waktu akses terakhir untuk mengubah kelas penyimpanan objek
Kode berikut memberikan contoh cara mengonfigurasi aturan siklus hidup berdasarkan waktu akses terakhir untuk mengubah kelas penyimpanan objek dalam bucket.
<?php
// Sertakan file autoload untuk memuat dependensi
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
use AlibabaCloud\Oss\V2\Models\LifecycleConfiguration;
// Tentukan deskripsi untuk parameter baris perintah
$optsdesc = [
"region" => ['help' => 'Wilayah tempat bucket berada', 'required' => True], // (Diperlukan) Tentukan wilayah tempat bucket berada.
"endpoint" => ['help' => 'Nama domain yang dapat digunakan layanan lain untuk mengakses OSS', 'required' => False], // (Opsional) Tentukan titik akhir yang dapat digunakan layanan lain untuk mengakses OSS.
"bucket" => ['help' => 'Nama bucket', 'required' => True], // (Diperlukan) Tentukan nama bucket.
];
// Hasilkan daftar opsi panjang untuk mengurai parameter baris perintah
$longopts = \array_map(function ($key) {
return "$key:"; // Tambahkan titik dua setelah setiap parameter untuk menunjukkan bahwa nilai diperlukan
}, array_keys($optsdesc));
// Uraikan parameter baris perintah
$options = getopt("", $longopts);
// Periksa apakah parameter yang diperlukan hilang
foreach ($optsdesc as $key => $value) {
if ($value['required'] === True && empty($options[$key])) {
$help = $value['help'];
echo "Error: argumen berikut diperlukan: --$key, $help"; // Beri tahu pengguna tentang parameter yang diperlukan tetapi hilang
exit(1);
}
}
// Dapatkan nilai parameter baris perintah
$region = $options["region"]; // Wilayah tempat bucket berada
$bucket = $options["bucket"]; // Nama bucket
// Gunakan variabel lingkungan untuk memuat ID AccessKey dan Rahasia AccessKey
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
// Gunakan konfigurasi default dari SDK
$cfg = Oss\Config::loadDefault();
// Tentukan penyedia kredensial
$cfg->setCredentialsProvider($credentialsProvider);
// Tentukan wilayah
$cfg->setRegion($region);
// Tentukan titik akhir jika titik akhir diberikan
if (isset($options["endpoint"])) {
$cfg->setEndpoint($options["endpoint"]);
}
// Buat instance OSSClient
$client = new Oss\Client($cfg);
// Definisikan aturan siklus hidup untuk mengonversi objek yang namanya mengandung awalan log/ ke kelas penyimpanan IA setelah 30 hari
$lifecycleRule = new Oss\Models\LifecycleRule(
prefix: 'log/', // Awalan objek
transitions: array(
new Oss\Models\LifecycleRuleTransition(
days: 30, // Waktu konversi adalah 30 hari
storageClass: 'IA', // Kelas penyimpanan target adalah IA
IsAccessTime: 'true', // Apakah akan memicu konversi berdasarkan waktu akses
ReturnToStdWhenVisit: 'false' // Tetap sebagai penyimpanan IA saat diakses kembali
)
),
id: 'rule', // ID aturan
status: 'Enabled' // Status aturan diaktifkan
);
// Buat objek konfigurasi siklus hidup dan tambahkan aturan siklus hidup
$lifecycleConfiguration = new LifecycleConfiguration(
rules: array($lifecycleRule)
);
// Buat objek permintaan untuk menetapkan siklus hidup bucket dan masukkan konfigurasi siklus hidup
$request = new Oss\Models\PutBucketLifecycleRequest(
bucket: $bucket,
lifecycleConfiguration: $lifecycleConfiguration
);
// Panggil metode putBucketLifecycle untuk menetapkan aturan siklus hidup untuk bucket
$result = $client->putBucketLifecycle($request);
// Tampilkan hasil yang dikembalikan
printf(
'status code:' . $result->statusCode . PHP_EOL . // Kode status respons HTTP
'request id:' . $result->requestId . PHP_EOL // Pengenal unik permintaan
);
Lihat aturan siklus hidup
Kode berikut memberikan contoh cara melihat informasi yang terkandung dalam aturan siklus hidup.
<?php
// Sertakan file autoload untuk memuat dependensi
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
// Tentukan deskripsi untuk parameter baris perintah
$optsdesc = [
"region" => ['help' => 'Wilayah tempat bucket berada', 'required' => True], // (Diperlukan) Tentukan wilayah tempat bucket berada.
"endpoint" => ['help' => 'Nama domain yang dapat digunakan layanan lain untuk mengakses OSS', 'required' => False], // (Opsional) Tentukan titik akhir yang dapat digunakan layanan lain untuk mengakses OSS.
"bucket" => ['help' => 'Nama bucket', 'required' => True], // (Diperlukan) Tentukan nama bucket.
];
// Hasilkan daftar opsi panjang untuk mengurai parameter baris perintah
$longopts = \array_map(function ($key) {
return "$key:"; // Tambahkan titik dua setelah setiap parameter untuk menunjukkan bahwa nilai diperlukan
}, array_keys($optsdesc));
// Uraikan parameter baris perintah
$options = getopt("", $longopts);
// Periksa apakah parameter yang diperlukan hilang
foreach ($optsdesc as $key => $value) {
if ($value['required'] === True && empty($options[$key])) {
$help = $value['help'];
echo "Error: argumen berikut diperlukan: --$key, $help"; // Beri tahu pengguna tentang parameter yang diperlukan tetapi hilang
exit(1);
}
}
// Dapatkan nilai parameter baris perintah
$region = $options["region"]; // Wilayah tempat bucket berada
$bucket = $options["bucket"]; // Nama bucket
// Gunakan variabel lingkungan untuk memuat ID AccessKey dan Rahasia AccessKey
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
// Gunakan konfigurasi default dari SDK
$cfg = Oss\Config::loadDefault();
// Tentukan penyedia kredensial
$cfg->setCredentialsProvider($credentialsProvider);
// Tentukan wilayah
$cfg->setRegion($region);
// Tentukan titik akhir jika titik akhir diberikan
if (isset($options["endpoint"])) {
$cfg->setEndpoint($options["endpoint"]);
}
// Buat instance OSSClient
$client = new Oss\Client($cfg);
// Buat objek permintaan untuk mendapatkan siklus hidup bucket
$request = new Oss\Models\GetBucketLifecycleRequest(bucket: $bucket);
// Panggil metode getBucketLifecycle untuk mendapatkan aturan siklus hidup bucket
$result = $client->getBucketLifecycle($request);
// Tampilkan hasil yang dikembalikan
printf(
'status code:' . $result->statusCode . PHP_EOL . // Kode status respons HTTP
'request id:' . $result->requestId . PHP_EOL . // Pengenal unik permintaan
'lifecycle:' . var_export($result->lifecycleConfiguration, true) . PHP_EOL // Isi aturan siklus hidup
);
Hapus aturan siklus hidup
Kode berikut memberikan contoh cara menghapus aturan siklus hidup yang dikonfigurasi untuk examplebucket. Jika Anda ingin menghapus satu atau lebih aturan siklus hidup, lihat Bagaimana Cara Menghapus Satu atau Lebih Aturan Siklus Hidup?.
<?php
// Sertakan file autoload untuk memuat dependensi
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
// Tentukan deskripsi untuk parameter baris perintah
$optsdesc = [
"region" => ['help' => 'Wilayah tempat bucket berada.', 'required' => True], // (Diperlukan) Tentukan wilayah tempat bucket berada.
"endpoint" => ['help' => 'Nama domain yang dapat digunakan layanan lain untuk mengakses OSS.', 'required' => False], // (Opsional) Tentukan titik akhir yang dapat digunakan layanan lain untuk mengakses OSS.
"bucket" => ['help' => 'Nama bucket', 'required' => True], // (Diperlukan) Tentukan nama bucket.
];
// Hasilkan daftar opsi panjang untuk mengurai parameter baris perintah
$longopts = \array_map(function ($key) {
return "$key:"; // Tambahkan titik dua setelah setiap parameter untuk menunjukkan bahwa nilai diperlukan
}, array_keys($optsdesc));
// Uraikan parameter baris perintah
$options = getopt("", $longopts);
// Periksa apakah parameter yang diperlukan hilang
foreach ($optsdesc as $key => $value) {
if ($value['required'] === True && empty($options[$key])) {
$help = $value['help'];
echo "Error: argumen berikut diperlukan: --$key, $help"; // Beri tahu pengguna tentang parameter yang diperlukan tetapi hilang
exit(1);
}
}
// Dapatkan nilai parameter baris perintah
$region = $options["region"]; // Wilayah tempat bucket berada
$bucket = $options["bucket"]; // Nama bucket
// Gunakan variabel lingkungan untuk memuat ID AccessKey dan Rahasia AccessKey
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
// Gunakan konfigurasi default dari SDK
$cfg = Oss\Config::loadDefault();
// Tentukan penyedia kredensial
$cfg->setCredentialsProvider($credentialsProvider);
// Tentukan wilayah
$cfg->setRegion($region);
// Tentukan titik akhir jika titik akhir diberikan
if (isset($options["endpoint"])) {
$cfg->setEndpoint($options["endpoint"]);
}
// Buat instance OSSClient
$client = new Oss\Client($cfg);
// Buat objek permintaan untuk menghapus aturan siklus hidup bucket
$request = new Oss\Models\DeleteBucketLifecycleRequest(bucket: $bucket);
// Panggil metode deleteBucketLifecycle untuk menghapus aturan siklus hidup bucket
$result = $client->deleteBucketLifecycle($request);
// Tampilkan hasil yang dikembalikan
printf(
'status code:' . $result->statusCode . PHP_EOL . // Kode status respons HTTP
'request id:' . $result->requestId . PHP_EOL // Pengenal unik permintaan
);
Referensi
Untuk informasi lebih lanjut tentang operasi API yang dapat Anda panggil untuk mengonfigurasi aturan siklus hidup, lihat PutBucketLifecycle.
Untuk informasi lebih lanjut tentang operasi API yang dapat Anda panggil untuk melihat aturan siklus hidup, lihat GetBucketLifecycle.
Untuk informasi lebih lanjut tentang operasi API yang dapat Anda panggil untuk menghapus aturan siklus hidup, lihat DeleteBucketLifecycle.