Secara default, memanggil operasi GetObject pada bucket yang telah diaktifkan fitur Pengendalian versi hanya mengembalikan versi terkini dari suatu objek.
Informasi latar belakang
Saat Anda memanggil operasi GetObject pada suatu bucket, berlaku salah satu dari tiga kasus berikut:
Jika versi terkini objek tersebut adalah penanda hapus, OSS mengembalikan respons 404 Not Found.
Jika Anda menentukan versionId objek dalam parameter kueri, versi yang ditentukan akan dikembalikan. Jika Anda mengatur versionId ke "null", versi objek yang memiliki versionId bernilai null akan dikembalikan.
Jika Anda mencoba mengambil penanda hapus dengan menentukan versionId-nya, OSS mengembalikan respons 405 Method Not Allowed.
Catatan penggunaan
Pada topik ini, titik akhir publik wilayah China (Hangzhou) digunakan. Jika Anda ingin mengakses OSS dari layanan Alibaba Cloud lainnya yang berada di wilayah yang sama dengan OSS, gunakan titik akhir internal. Untuk informasi selengkapnya mengenai wilayah dan titik akhir OSS, lihat Wilayah dan titik akhir.
Pada topik ini, kredensial akses diperoleh dari Variabel lingkungan. Untuk informasi selengkapnya tentang cara mengonfigurasi kredensial akses, lihat Konfigurasikan kredensial akses menggunakan OSS SDK untuk Python 1.0.
Pada topik ini, instans OSSClient dibuat menggunakan titik akhir OSS. Jika Anda ingin membuat instans OSSClient menggunakan nama domain kustom atau Security Token Service (STS), lihat Inisialisasi.
Untuk mengunduh objek, Anda harus memiliki izin
oss:GetObject. Untuk informasi selengkapnya, lihat Lampirkan kebijakan kustom ke RAM user.
Kode contoh
Kode berikut memberikan contoh cara mengunduh file:
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah dikonfigurasi.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Tentukan titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur titik akhir menjadi https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Tentukan wilayah yang sesuai dengan titik akhir tersebut, misalnya cn-hangzhou. Perhatikan bahwa parameter ini wajib untuk tanda tangan V4.
region = "cn-hangzhou"
# Ganti yourBucketName dengan nama bucket Anda.
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)
# Unduh versi tertentu dari objek.
params = dict()
params['versionId'] = '<yourObjectVersionId>'
object_stream = bucket.get_object('<yourObjectName>', params=params)
# Baca konten objek yang diunduh.
read_content = object_stream.read()
print('get object content:', read_content)
# Lihat ID versi objek yang diunduh.
print('get object versionid:', object_stream.versionid)
# Operasi get_object mengembalikan aliran. Pemeriksaan redundansi siklik (CRC) dari data objek hanya dihitung setelah metode read() dipanggil. Oleh karena itu, Anda harus melakukan pemeriksaan CRC setelah pemanggilan tersebut.
if object_stream.client_crc != object_stream.server_crc:
print("The CRC checksum between client and server is inconsistent!")Referensi
Untuk informasi selengkapnya mengenai operasi API untuk mengunduh file, lihat GetObject.