Topik ini menjelaskan cara menampilkan daftar objek dalam bucket yang telah diaktifkan fitur Pengendalian versi. Anda dapat menampilkan semua objek, sejumlah objek tertentu, atau objek yang memiliki awalan tertentu.
Catatan penggunaan
Pada topik ini digunakan titik akhir publik wilayah China (Hangzhou). Jika Anda 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 menampilkan daftar objek, Anda harus memiliki izin
oss:ListObjectVersions. Untuk informasi selengkapnya, lihat Lampirkan kebijakan kustom ke RAM user.
Menampilkan semua versi objek dalam bucket
Kode berikut menunjukkan cara menampilkan informasi versi semua objek, termasuk penanda hapus, dalam bucket tertentu:
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, 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 tempat bucket berada, misalnya cn-hangzhou. Catatan: Parameter ini wajib untuk tanda tangan V4.
region = "cn-hangzhou"
# Ganti yourBucketName dengan nama bucket Anda.
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)
# Setelah Anda mengaktifkan Pengendalian versi untuk bucket, Anda dapat memanggil operasi list_object_versions untuk mengembalikan informasi mengenai berbagai versi objek.
# Tampilkan informasi versi semua objek, termasuk penanda hapus, dalam bucket.
result = bucket.list_object_versions()
# Tampilkan informasi versi semua objek.
next_key_marker = None
next_versionid_marker = None
while True:
result = bucket.list_object_versions(key_marker=next_key_marker, versionid_marker=next_versionid_marker)
# Lihat informasi versi objek yang ditampilkan.
for version_info in result.versions:
print('version_info.versionid:', version_info.versionid)
print('version_info.key:', version_info.key)
print('version_info.is_latest:', version_info.is_latest)
# Lihat informasi versi penanda hapus yang ditampilkan.
for del_maker_Info in result.delete_marker:
print('del_maker.key:', del_maker_Info.key)
print('del_maker.versionid:', del_maker_Info.versionid)
print('del_maker.is_latest:', del_maker_Info.is_latest)
is_truncated = result.is_truncated
# Periksa apakah daftar sudah lengkap. Jika belum lengkap, lanjutkan menampilkan objek yang tersisa. Jika sudah lengkap, keluar dari loop.
if is_truncated:
next_key_marker = result.next_key_marker
next_versionid_marker = result.next_versionid_marker
else:
breakMenampilkan versi objek dengan awalan tertentu
Kode berikut menunjukkan cara menampilkan informasi versi objek yang memiliki awalan tertentu:
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, 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 tempat bucket berada, misalnya cn-hangzhou. Catatan: Parameter ini wajib untuk tanda tangan V4.
region = "cn-hangzhou"
# Ganti yourBucketName dengan nama bucket Anda.
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)
# Setelah Anda mengaktifkan Pengendalian versi untuk bucket, Anda dapat memanggil operasi list_object_versions untuk mengembalikan informasi mengenai berbagai versi objek.
# Tampilkan informasi versi semua objek, termasuk penanda hapus, dalam bucket.
result = bucket.list_object_versions()
# Tentukan bahwa Anda ingin menampilkan informasi versi objek yang namanya diawali dengan awalan "test-".
prefix = 'test-'
next_key_marker = None
next_versionid_marker = None
while True:
result = bucket.list_object_versions(prefix=prefix, key_marker=next_key_marker, versionid_marker=next_versionid_marker)
# Lihat informasi versi objek yang ditampilkan.
for version_info in result.versions:
print('version_info.versionid:', version_info.versionid)
print('version_info.key:', version_info.key)
print('version_info.is_latest:', version_info.is_latest)
# Lihat informasi versi penanda hapus yang ditampilkan.
for del_maker_Info in result.delete_marker:
print('del_maker.key:', del_maker_Info.key)
print('del_maker.versionid:', del_maker_Info.versionid)
print('del_maker.is_latest:', del_maker_Info.is_latest)
is_truncated = result.is_truncated
# Periksa apakah daftar sudah lengkap. Jika belum lengkap, lanjutkan menampilkan objek yang tersisa. Jika sudah lengkap, keluar dari loop.
if is_truncated:
next_key_marker = result.next_key_marker
next_versionid_marker = result.next_versionid_marker
else:
breakMenampilkan jumlah tertentu dari versi objek
Kode berikut menunjukkan cara menampilkan informasi versi sejumlah objek tertentu:
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, 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 tempat bucket berada, misalnya cn-hangzhou. Catatan: Parameter ini wajib untuk tanda tangan V4.
region = "cn-hangzhou"
# Ganti yourBucketName dengan nama bucket Anda.
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)
# Setelah Anda mengaktifkan Pengendalian versi untuk bucket, Anda dapat memanggil operasi list_object_versions untuk mengembalikan informasi mengenai berbagai versi objek.
# Tampilkan informasi versi semua objek, termasuk penanda hapus, dalam bucket.
result = bucket.list_object_versions()
# Tentukan bahwa maksimal 200 hasil dapat dikembalikan.
max_keys = 200
result = bucket.list_object_versions(max_keys=max_keys)
# Lihat informasi versi objek yang ditampilkan.
for version_info in result.versions:
print('version_info.versionid:', version_info.versionid)
print('version_info.key:', version_info.key)
print('version_info.is_latest:', version_info.is_latest)
# Lihat informasi versi penanda hapus objek yang ditampilkan.
for del_maker_Info in result.delete_marker:
print('del_maker.key:', del_maker_Info.key)
print('del_maker.versionid:', del_maker_Info.versionid)
print('del_maker.is_latest:', del_maker_Info.is_latest)
# Periksa apakah daftar terpotong.
# Anda menentukan bahwa maksimal 200 hasil dapat dikembalikan. Jika jumlah objek dalam bucket lebih dari 200, daftar akan terpotong dan is_truncated bernilai True. Jika jumlah objek kurang dari 200, daftar tidak terpotong dan is_truncated bernilai False.
print('is truncated', result.is_truncated)Fitur folder
OSS tidak memiliki struktur folder asli. Semua elemen disimpan sebagai objek. Anda dapat membuat folder dengan membuat objek berukuran nol byte yang namanya diakhiri dengan garis miring (/). Objek ini dapat diunggah dan diunduh. Konsol OSS menampilkan objek yang namanya diakhiri dengan garis miring (/) sebagai folder.
Anda dapat menggunakan parameter `delimiter` dan `prefix` untuk mensimulasikan folder:
Jika Anda mengatur `prefix` ke nama folder, semua objek yang namanya diawali dengan awalan tersebut akan ditampilkan. Semua file dan subfolder dalam folder tersebut ditampilkan sebagai objek.
Jika Anda mengatur `prefix` dan juga mengatur `delimiter` ke garis miring (/), hanya file dan subfolder dalam folder tersebut yang ditampilkan. Subfolder ditampilkan sebagai `CommonPrefixes`. File dan folder di dalam subfolder tersebut tidak ditampilkan.
Asumsikan bucket bernama `examplebucket` berisi objek oss.jpg, fun/test.jpg, fun/movie/001.avi, dan fun/movie/007.txt, serta menggunakan garis miring (/) sebagai pemisah folder. Struktur foldernya adalah sebagai berikut:
examplebucket
└── oss.jpg
└── fun
└── test.jpg
└── movie
└── 001.avi
└── 007.txtContoh berikut menunjukkan cara menampilkan daftar objek dengan mensimulasikan folder.
Menampilkan versi objek dalam direktori root
Kode berikut menunjukkan cara menampilkan informasi versi objek dalam direktori root:
# -*- coding: utf-8 -*- import oss2 from oss2.credentials import EnvironmentVariableCredentialsProvider # Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, 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 tempat bucket berada, misalnya cn-hangzhou. Catatan: Parameter ini wajib untuk tanda tangan V4. region = "cn-hangzhou" # Ganti yourBucketName dengan nama bucket Anda. bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region) # Setelah Anda mengaktifkan Pengendalian versi untuk bucket, Anda dapat memanggil operasi list_object_versions untuk mengembalikan informasi mengenai berbagai versi objek. # Tampilkan informasi versi semua objek, termasuk penanda hapus, dalam bucket. result = bucket.list_object_versions() # Atur delimiter ke garis miring (/). delimiter = "/" next_key_marker = None next_versionid_marker = None while True: result = bucket.list_object_versions(delimiter=delimiter, key_marker=next_key_marker, versionid_marker=next_versionid_marker) # Lihat informasi versi objek yang ditampilkan. for version_info in result.versions: print('version_info.versionid:', version_info.versionid) print('version_info.key:', version_info.key) print('version_info.is_latest:', version_info.is_latest) # Lihat informasi versi penanda hapus yang ditampilkan. for del_maker_Info in result.delete_marker: print('del_maker.key:', del_maker_Info.key) print('del_maker.versionid:', del_maker_Info.versionid) print('del_maker.is_latest:', del_maker_Info.is_latest) # Lihat nama direktori yang diakhiri dengan garis miring (/). for common_prefix in result.common_prefix: print("common_prefix:", common_prefix) is_truncated = result.is_truncated # Periksa apakah daftar sudah lengkap. Jika belum lengkap, lanjutkan menampilkan objek yang tersisa. Jika sudah lengkap, keluar dari loop. if is_truncated: next_key_marker = result.next_key_marker next_versionid_marker = result.next_versionid_marker else: breakHasil:
('version_info.versionid:', 'CAEQEhiBgMCw8Y7FqBciIGIzMDE3MTEzOWRiMDRmZmFhMmRlMjljZWI0MWU4****') ('version_info.key:', 'oss.jpg') ('version_info.is_latest:', True) ('common_prefix:', 'fun/')Menampilkan file dan subfolder dalam folder
Kode berikut menunjukkan cara menampilkan file dan subfolder dalam folder tertentu:
# -*- coding: utf-8 -*- import oss2 from oss2.credentials import EnvironmentVariableCredentialsProvider # Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, 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 tempat bucket berada, misalnya cn-hangzhou. Catatan: Parameter ini wajib untuk tanda tangan V4. region = "cn-hangzhou" # Ganti yourBucketName dengan nama bucket Anda. bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region) # Setelah Anda mengaktifkan Pengendalian versi untuk bucket, Anda dapat memanggil operasi list_object_versions untuk mengembalikan informasi mengenai berbagai versi objek. # Tampilkan informasi versi semua objek, termasuk penanda hapus, dalam bucket. result = bucket.list_object_versions() # Atur delimiter ke garis miring (/) dan prefix ke fun/. prefix = "fun/" delimiter = "/" next_key_marker = None next_versionid_marker = None while True: result = bucket.list_object_versions(prefix=prefix, delimiter=delimiter, key_marker=next_key_marker, versionid_marker=next_versionid_marker) # Lihat informasi versi objek yang ditampilkan. for version_info in result.versions: print('version_info.versionid:', version_info.versionid) print('version_info.key:', version_info.key) print('version_info.is_latest:', version_info.is_latest) # Lihat informasi versi penanda hapus yang ditampilkan. for del_maker_Info in result.delete_marker: print('del_maker.key:', del_maker_Info.key) print('del_maker.versionid:', del_maker_Info.versionid) print('del_maker.is_latest:', del_maker_Info.is_latest) # Lihat nama folder yang diakhiri dengan garis miring (/). for common_prefix in result.common_prefix: print("common_prefix:", common_prefix) is_truncated = result.is_truncated # Periksa apakah daftar sudah lengkap. Jika belum lengkap, lanjutkan menampilkan objek yang tersisa. Jika sudah lengkap, keluar dari loop. if is_truncated: next_key_marker = result.next_key_marker next_versionid_marker = result.next_versionid_marker else: breakHasil:
('version_info.versionid:', 'CAEQFRiBgMCh9JDkrxciIGE3OTNkYzFhYTc2YzQzOTQ4Y2MzYjg2YjQ4ODg*****') ('version_info.key:', 'fun/test.jpg') ('version_info.is_latest:', True) ('commonPrefix:', 'fun/movie/')
Referensi
Untuk informasi selengkapnya mengenai operasi API untuk menampilkan daftar objek, lihat ListObjectVersions (GetBucketVersions).