Object Storage Service (OSS) menyediakan kelas penyimpanan berikut untuk mencakup berbagai skenario penyimpanan data, mulai dari data panas hingga data dingin: Standard, Infrequent Access (IA), Arsip, Penyimpanan Arsip Dingin, dan Deep Cold Archive. Di OSS, setelah sebuah objek dibuat, kontennya tidak dapat diubah. Untuk mengonversi kelas penyimpanan suatu objek, Anda harus membuat objek baru dan mengonversi kelas penyimpanannya. Topik ini menjelaskan cara menggunakan OSS SDK untuk PHP 2.0 dalam melakukan konversi kelas penyimpanan.
Catatan
Kode contoh dalam topik ini menggunakan ID wilayah
cn-hangzhoudari Wilayah Hangzhou, Tiongkok. Secara default, titik akhir publik digunakan untuk mengakses sumber daya dalam bucket. Jika Anda ingin mengakses sumber daya dalam bucket dari layanan Alibaba Cloud lainnya di wilayah yang sama dengan bucket tersebut, gunakan titik akhir internal. Untuk informasi lebih lanjut tentang wilayah dan titik akhir OSS, lihat Wilayah dan titik akhir.Untuk mengonversi kelas penyimpanan suatu objek, Anda harus memiliki izin
oss:GetObject,oss:PutObject, danoss:RestoreObject. Untuk informasi lebih lanjut, lihat Menambahkan kebijakan kustom ke Pengguna RAM.
Kode contoh
Gunakan metode CopyObject untuk mengonversi kelas penyimpanan
Anda dapat menggunakan metode CopyObject untuk mengonversi kelas penyimpanan objek dari Standard ke Arsip.
<?php
// Memperkenalkan file autoload untuk memuat pustaka dependensi.
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
// Mendefinisikan dan menjelaskan 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 untuk mengakses OSS.
"bucket" => ['help' => 'Nama bucket', 'required' => True], // (Diperlukan) Tentukan nama bucket tujuan.
"key" => ['help' => 'Nama objek', 'required' => True], // (Diperlukan) Tentukan nama objek tujuan.
"src-bucket" => ['help' => 'Nama bucket sumber', 'required' => False], // (Opsional) Tentukan nama bucket sumber.
"src-key" => ['help' => 'Nama objek sumber', 'required' => True], // (Diperlukan) Tentukan nama objek sumber.
];
// Mengonversi deskripsi menjadi daftar opsi panjang yang diperlukan oleh getopt.
// Tambahkan tanda titik dua (:) di akhir setiap parameter untuk menunjukkan bahwa nilai diperlukan.
$longopts = \array_map(function ($key) {
return "$key:";
}, array_keys($optsdesc));
// Menguraikan parameter baris perintah.
$options = getopt("", $longopts);
// Periksa apakah parameter yang diperlukan telah dikonfigurasi.
foreach ($optsdesc as $key => $value) {
if ($value['required'] === True && empty($options[$key])) {
$help = $value['help']; // Dapatkan informasi bantuan untuk parameter.
echo "Error: argumen berikut diperlukan: --$key, $help" . PHP_EOL;
exit(1); // Keluar dari program jika parameter yang diperlukan belum dikonfigurasi.
}
}
// Tetapkan nilai yang diurai dari parameter baris perintah ke variabel yang sesuai.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket tujuan.
$key = $options["key"]; // Nama objek tujuan.
$srcKey = $options["src-key"]; // Nama objek sumber.
// Memuat kredensial akses dari variabel lingkungan.
// Gunakan EnvironmentVariableCredentialsProvider untuk mengambil ID AccessKey dan Rahasia AccessKey dari variabel lingkungan.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
// Gunakan konfigurasi default dari SDK.
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider); // Tentukan penyedia kredensial.
$cfg->setRegion($region); // Tentukan wilayah tempat bucket berada.
if (isset($options["endpoint"])) {
$cfg->setEndpoint($options["endpoint"]); // Tentukan titik akhir jika disediakan.
}
// Buat instance klien OSS.
$client = new Oss\Client($cfg);
// Buat objek CopyObjectRequest untuk menyalin objek sumber.
$request = new Oss\Models\CopyObjectRequest(
bucket: $bucket,
key: $key,
sourceKey: $srcKey,
sourceBucket: $bucket,
storageClass: 'Archive' // Tetapkan kelas penyimpanan ke Arsip.
if (!empty($options["src-bucket"])) {
$request->sourceBucket = $options["src-bucket"]; // Jika nama bucket sumber diberikan, tentukan parameter sourceBucket.
}
$request->sourceKey = $srcKey; // Tentukan nama objek sumber.
// Lakukan operasi penyalinan objek.
$result = $client->copyObject($request);
// Tampilkan hasil penyalinan objek.
printf(
'kode status:' . $result->statusCode . PHP_EOL . // Kode status HTTP. Misalnya, kode status HTTP 200 menunjukkan bahwa permintaan berhasil.
'ID permintaan:' . $result->requestId . PHP_EOL // ID permintaan, yang dapat digunakan untuk debugging atau melacak permintaan.
);
Gunakan Copier untuk mengonversi kelas penyimpanan objek
Disarankan untuk menggunakan metode Copier.Copy di OSS SDK untuk PHP 2.0 untuk mengonversi kelas penyimpanan. Metode ini menggabungkan operasi salinan sederhana dan salinan multipart serta secara cerdas memilih yang paling sesuai berdasarkan parameter permintaan yang diberikan.
Berikut adalah kode contoh untuk menggunakan metode Copier.Copy dalam mengonversi kelas penyimpanan objek dari Standard ke Arsip.
<?php
// Memperkenalkan file autoload untuk memuat pustaka dependensi.
require_once __DIR__ . '/../vendor/autoload.php';
use AlibabaCloud\Oss\V2 as Oss;
// Mendefinisikan dan menjelaskan 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.
"bucket" => ['help' => 'Nama bucket', 'required' => True], // (Diperlukan) Tentukan nama bucket.
"key" => ['help' => 'Nama objek', 'required' => True], // (Diperlukan) Tentukan nama objek tujuan.
"src-key" => ['help' => 'Nama objek sumber', 'required' => True], // (Diperlukan) Tentukan nama objek sumber.
];
// Mengonversi deskripsi menjadi daftar opsi panjang yang diperlukan oleh getopt.
// Tambahkan tanda titik dua (:) di akhir setiap parameter untuk menunjukkan bahwa nilai diperlukan.
$longopts = \array_map(function ($key) {
return "$key:";
}, array_keys($optsdesc));
// Menguraikan parameter baris perintah.
$options = getopt("", $longopts);
// Periksa apakah parameter yang diperlukan telah dikonfigurasi.
foreach ($optsdesc as $key => $value) {
if ($value['required'] === True && empty($options[$key])) {
$help = $value['help']; // Dapatkan informasi bantuan untuk parameter.
echo "Error: argumen berikut diperlukan: --$key, $help" . PHP_EOL;
exit(1); // Keluar dari program jika parameter yang diperlukan hilang.
}
}
// Dapatkan nilai dari parameter yang diurai.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.
$key = $options["key"]; // Nama objek tujuan.
$srcKey = $options["src-key"]; // Nama objek sumber.
// Memuat kredensial akses dari variabel lingkungan.
// Gunakan EnvironmentVariableCredentialsProvider untuk mengambil ID AccessKey dan Rahasia AccessKey dari variabel lingkungan.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();
// Gunakan konfigurasi default dari SDK.
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider); // Tentukan penyedia kredensial.
$cfg->setRegion($region); // Tentukan wilayah tempat bucket berada.
if (isset($options["endpoint"])) {
$cfg->setEndpoint($options["endpoint"]); // Tentukan titik akhir jika disediakan.
}
// Buat instance OSSClient.
$client = new Oss\Client($cfg);
// Buat instance Copier.
$copier = $client->newCopier();
$dstKey = $key; // Nama objek tujuan.
$copyRequest = new Oss\Models\CopyObjectRequest(
bucket: $bucket,
key: $dstKey,
sourceBucket: $bucket,
sourceKey: $srcKey,
storageClass: "Archive");
$result = $copier->copy(
request: $copyRequest,
);
printf(
'kode status:' . $result->statusCode . PHP_EOL . // Kode status HTTP. Misalnya, kode status HTTP 200 menunjukkan bahwa permintaan berhasil.
'ID permintaan:' . $result->requestId . PHP_EOL // ID permintaan, yang dapat digunakan untuk debugging atau melacak permintaan.
);