全部产品
Search
文档中心

Object Storage Service:Memulihkan objek (PHP SDK V2)

更新时间:Nov 09, 2025

Objek dalam kelas penyimpanan Archive, Cold Archive, dan Deep Cold Archive harus dipulihkan sebelum dapat dibaca. Saat objek dipulihkan, replika sementara dalam kelas penyimpanan Standar dibuat. Objek asli dan replikanya berdampingan. Replika tersebut akan dihapus secara otomatis setelah periode pemulihan berakhir. Topik ini menjelaskan cara memulihkan objek Archive, Cold Archive, dan Deep Cold Archive menggunakan OSS SDK untuk PHP.

Catatan

  • Operasi RestoreObject hanya dapat digunakan untuk memulihkan objek dalam kelas penyimpanan Archive, Cold Archive, dan Deep Cold Archive.

  • Kode contoh dalam topik ini menggunakan ID wilayah cn-hangzhou untuk Wilayah (Hangzhou) Tiongkok. Titik akhir publik digunakan secara default. Jika Anda ingin mengakses OSS dari layanan Alibaba Cloud lainnya di wilayah yang sama, Anda dapat menggunakan titik akhir internal. Untuk informasi lebih lanjut tentang wilayah dan titik akhir yang didukung oleh OSS, lihat Wilayah dan titik akhir OSS.

  • Untuk memulihkan objek, Anda harus memiliki izin oss:RestoreObject. Untuk informasi lebih lanjut, lihat Melampirkan kebijakan kustom ke Pengguna RAM.

Kode contoh

Gunakan kode berikut untuk memulihkan objek Archive, Cold Archive, atau Deep Cold Archive:

<?php

// Sertakan file autoload untuk memastikan bahwa pustaka dependensi dimuat dengan benar.
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// Tentukan deskripsi parameter baris perintah.
$optsdesc = [
    "region" => ['help' => 'Wilayah tempat bucket berada.', 'required' => True], // Diperlukan. Wilayah tempat bucket berada.
    "endpoint" => ['help' => 'Nama domain yang dapat digunakan layanan lain untuk mengakses OSS.', 'required' => False], // Opsional. Titik akhir.
    "bucket" => ['help' => 'Nama bucket', 'required' => True], // Diperlukan. Nama bucket.
    "key" => ['help' => 'Nama objek', 'required' => True], // Diperlukan. Nama objek.
];

// Ubah deskripsi parameter menjadi format opsi panjang yang diperlukan oleh getopt.
// Tanda titik dua (:) ditambahkan di akhir setiap parameter untuk menunjukkan bahwa parameter tersebut memerlukan nilai.
$longopts = \array_map(function ($key) {
    return "$key:";
}, array_keys($optsdesc));

// Parsing parameter baris perintah.
$options = getopt("", $longopts);

// Periksa apakah parameter yang diperlukan ada.
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 tidak ada.
    }
}

// Ekstrak nilai dari parameter yang telah diuraikan.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.
$key = $options["key"];       // Nama objek.

// Muat informasi kredensial dari variabel lingkungan.
// Gunakan EnvironmentVariableCredentialsProvider untuk membaca Access Key ID dan Access Key Secret dari variabel lingkungan.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

// Gunakan konfigurasi default dari SDK.
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider); // Tetapkan penyedia kredensial.
$cfg->setRegion($region); // Tetapkan wilayah tempat bucket berada.
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]); // Tetapkan titik akhir jika titik akhir disediakan.
}

// Buat instans klien OSS.
$client = new Oss\Client($cfg);

// Buat objek RestoreObjectRequest untuk memulihkan objek Archive.
$request = new Oss\Models\RestoreObjectRequest(bucket: $bucket, key: $key);

// Pulihkan objek.
$result = $client->restoreObject($request);

// Cetak hasil pemulihan.
printf(
    'status code:' . $result->statusCode . PHP_EOL . // Kode status HTTP. Contohnya, 200 menunjukkan sukses.
    'request id:' . $result->requestId . PHP_EOL     // ID permintaan, yang digunakan untuk debug atau jejak permintaan.
);

Skenario umum

Hapus replika menggunakan metode CleanRestoredObject

Saat memulihkan objek Cold Archive atau Deep Cold Archive, replika sementara dalam kelas penyimpanan Standar dibuat untuk akses. Anda akan dikenakan biaya untuk penyimpanan replika ini hingga periode pemulihan berakhir. Untuk mengakhiri pemulihan lebih awal dan menghentikan biaya penyimpanan untuk replika, Anda dapat mengirim permintaan CleanRestoredObject. Setelah permintaan selesai, objek kembali ke status beku dan tidak dapat dibaca.

<?php

// Sertakan file autoload untuk memastikan bahwa pustaka dependensi dimuat dengan benar.
require_once __DIR__ . '/../vendor/autoload.php';

use AlibabaCloud\Oss\V2 as Oss;

// Tentukan deskripsi parameter baris perintah.
$optsdesc = [
    "region" => ['help' => 'Wilayah tempat bucket berada.', 'required' => True], // Diperlukan. Wilayah tempat bucket berada.
    "endpoint" => ['help' => 'Nama domain yang dapat digunakan layanan lain untuk mengakses OSS.', 'required' => False], // Opsional. Titik akhir.
    "bucket" => ['help' => 'Nama bucket', 'required' => True], // Diperlukan. Nama bucket.
    "key" => ['help' => 'Nama objek', 'required' => True], // Diperlukan. Nama objek.
];

// Ubah deskripsi parameter menjadi format opsi panjang yang diperlukan oleh getopt.
// Tanda titik dua (:) ditambahkan di akhir setiap parameter untuk menunjukkan bahwa parameter tersebut memerlukan nilai.
$longopts = \array_map(function ($key) {
    return "$key:";
}, array_keys($optsdesc));

// Parsing parameter baris perintah.
$options = getopt("", $longopts);

// Periksa apakah parameter yang diperlukan ada.
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 tidak ada.
    }
}

// Ekstrak nilai dari parameter yang telah diuraikan.
$region = $options["region"]; // Wilayah tempat bucket berada.
$bucket = $options["bucket"]; // Nama bucket.
$key = $options["key"];       // Nama objek.

// Muat informasi kredensial dari variabel lingkungan.
// Gunakan EnvironmentVariableCredentialsProvider untuk membaca Access Key ID dan Access Key Secret dari variabel lingkungan.
$credentialsProvider = new Oss\Credentials\EnvironmentVariableCredentialsProvider();

// Gunakan konfigurasi default dari SDK.
$cfg = Oss\Config::loadDefault();
$cfg->setCredentialsProvider($credentialsProvider); // Tetapkan penyedia kredensial.
$cfg->setRegion($region); // Tetapkan wilayah tempat bucket berada.
if (isset($options["endpoint"])) {
    $cfg->setEndpoint($options["endpoint"]); // Tetapkan titik akhir jika titik akhir disediakan.
}

// Buat instans klien OSS.
$client = new Oss\Client($cfg);

// Buat objek CleanRestoredObjectRequest untuk membersihkan objek Archive yang telah dipulihkan.
$request = new Oss\Models\CleanRestoredObjectRequest($bucket, $key);

// Bersihkan objek yang telah dipulihkan.
$result = $client->cleanRestoredObject($request);

// Cetak hasil pembersihan.
printf(
    'status code:' . $result->statusCode . PHP_EOL . // Kode status HTTP. Contohnya, 200 menunjukkan sukses.
    'request id:' . $result->requestId . PHP_EOL     // ID permintaan, yang digunakan untuk debug atau jejak permintaan.
);

Referensi