Sebelum membaca objek Arsip, Arsip Dingin, atau Deep Cold Archive, Anda harus memulihkannya terlebih dahulu. Saat objek dipulihkan, salinan sementara akan dibuat di samping objek asli dan secara otomatis dihapus setelah keadaan dipulihkan berakhir. Topik ini menjelaskan cara menggunakan OSS Python SDK untuk memulihkan objek tersebut.
Catatan
Kode contoh dalam topik ini menggunakan titik akhir publik di wilayah China (Hangzhou) (ID wilayah:
cn-hangzhou) sebagai contoh. Jika Anda ingin mengakses OSS dari produk Alibaba Cloud lainnya di wilayah yang sama, gunakan titik akhir internal. Untuk informasi lebih lanjut tentang titik akhir di setiap wilayah OSS, lihat Wilayah dan titik akhir OSS.Untuk memulihkan objek, Anda harus memiliki izin
oss:RestoreObject. Untuk informasi lebih lanjut, lihat Memberikan izin kustom kepada Pengguna RAM.
Definisi metode
restore_object(request: RestoreObjectRequest, **kwargs) → RestoreObjectResultParameter permintaan
Parameter | Tipe | Deskripsi |
request | RestoreObjectRequest | Parameter permintaan. Untuk informasi lebih lanjut, lihat RestoreObjectRequest |
Tabel berikut menjelaskan parameter umum dari RestoreObjectRequest.
Parameter | Tipe | Deskripsi |
bucket | str | Nama bucket. |
key | str | Nama objek. |
version_id | str | ID versi objek yang akan dipulihkan. Jika Anda tidak menetapkan parameter ini, versi terbaru objek dipulihkan. |
restore_request | RestoreRequest | Parameter permintaan pemulihan. Untuk informasi lebih lanjut, lihat RestoreRequest. |
Tabel berikut menjelaskan parameter dari RestoreRequest.
Parameter | Tipe | Deskripsi |
days | int | Durasi objek tetap dalam keadaan dipulihkan. Untuk informasi lebih lanjut, lihat Memulihkan objek. |
tier | str | Waktu yang diperlukan untuk memulihkan objek. Untuk informasi lebih lanjut, lihat Memulihkan objek. |
Nilai kembali
Tipe | Deskripsi |
RestoreObjectResult | Nilai kembali. Untuk informasi lebih lanjut, lihat RestoreObjectResult. |
Untuk definisi metode lengkap, lihat restore_object.py.
Kode contoh
Anda dapat menggunakan kode berikut untuk memulihkan objek Arsip, Arsip Dingin, atau Deep Cold Archive:
import time
import argparse
import alibabacloud_oss_v2 as oss
# Buat parser argumen baris perintah.
parser = argparse.ArgumentParser(description="contoh memulihkan objek")
# Tambahkan argumen baris perintah yang diperlukan.
parser.add_argument('--region', help='Wilayah tempat bucket berada.', required=True)
parser.add_argument('--bucket', help='Nama bucket.', required=True)
parser.add_argument('--endpoint', help='Nama domain yang dapat digunakan layanan lain untuk mengakses OSS.')
parser.add_argument('--key', help='Nama objek.', required=True)
def main():
# Parsing argumen baris perintah yang masuk.
args = parser.parse_args()
# Muat informasi autentikasi dari variabel lingkungan.
credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
# Gunakan konfigurasi SDK default.
cfg = oss.config.load_default()
# Tetapkan penyedia kredensial untuk autentikasi berbasis variabel lingkungan.
cfg.credentials_provider = credentials_provider
# Tetapkan wilayah.
cfg.region = args.region
# Jika endpoint disediakan, tetapkan endpoint sebagai item konfigurasi.
if args.endpoint is not None:
cfg.endpoint = args.endpoint
# Buat klien OSS.
client = oss.Client(cfg)
# Jalankan permintaan untuk memulihkan objek.
result = client.restore_object(oss.RestoreObjectRequest(
bucket=args.bucket,
key=args.key,
restore_request=oss.RestoreRequest(
days=1,
# Opsional: Tetapkan prioritas pemulihan untuk objek Arsip Dingin atau Deep Cold Archive. Nilai valid: Expedited, Standard, dan Bulk. Nilai default: Standard.
# tier="Bulk",
)
))
# Cetak hasil permintaan pemulihan.
print(f'kode status: {result.status_code},'
f' ID permintaan: {result.request_id},'
f' ID versi: {result.version_id},'
f' prioritas pemulihan: {result.restore_priority},'
)
# Loop untuk memeriksa apakah objek telah dipulihkan.
while True:
# Dapatkan header objek.
result = client.head_object(oss.HeadObjectRequest(
bucket=args.bucket,
key=args.key,
))
# Periksa keadaan dipulihkan.
if result.restore and result.restore != 'ongoing-request="true"':
print('Pemulihan berhasil')
break
# Periksa lagi setelah 5 detik.
time.sleep(5)
print(result.restore)
# Titik masuk program.
if __name__ == "__main__":
main()
Referensi
Untuk kode contoh lengkap untuk memulihkan objek, lihat restore_object.py.
Untuk informasi lebih lanjut tentang cara memulihkan objek, lihat Memulihkan objek.