全部产品
Search
文档中心

Object Storage Service:Memulihkan objek (Python SDK V2)

更新时间:Nov 09, 2025

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) → RestoreObjectResult

Parameter 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