Topik ini menjelaskan cara membuat, menanyakan, mencatat, dan menghapus daftar inventaris untuk sebuah bucket menggunakan Object Storage Service (OSS) SDK untuk Python.
Catatan
Kode contoh dalam topik ini menggunakan ID wilayah
cn-hangzhoudari Wilayah Hangzhou, Tiongkok sebagai contoh. Secara default, titik akhir publik digunakan. Jika Anda ingin mengakses OSS dari produk Alibaba Cloud lainnya di wilayah yang sama, gunakan titik akhir internal. Untuk informasi lebih lanjut tentang pemetaan antara wilayah OSS dan titik akhir, lihat Wilayah dan Titik Akhir.Pastikan Anda memiliki izin untuk membuat, menanyakan, mencatat, dan menghapus daftar bucket. Secara default, pemilik bucket memiliki izin untuk melakukan operasi tersebut. Jika Anda tidak memiliki izin, hubungi pemilik bucket untuk mendapatkan akses.
Anda dapat mengonfigurasi hingga 1.000 daftar untuk sebuah bucket.
Bucket sumber yang ingin dikonfigurasikan sebagai daftar harus berada di wilayah yang sama dengan bucket tujuan tempat Anda ingin menyimpan daftar inventaris.
Contoh
Tambahkan konfigurasi daftar periksa
Kode contoh berikut menunjukkan cara membuat daftar untuk sebuah bucket:
import argparse
import alibabacloud_oss_v2 as oss
# Buat parser parameter baris perintah dan jelaskan tujuan dari skrip. Contoh ini menjelaskan cara membuat daftar untuk sebuah bucket.
parser = argparse.ArgumentParser(description="put bucket inventory sample")
# Tentukan parameter baris perintah, termasuk wilayah, nama bucket, titik akhir, ID pengguna, Nama Sumber Daya Alibaba Cloud (ARN) dari Peran RAM, dan nama daftar inventaris 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('--user_id', help='ID akun pengguna.', required=True)
parser.add_argument('--arn', help='Alibaba Cloud Resource Name (ARN) dari peran yang memiliki izin untuk membaca semua objek dari bucket sumber dan menulis objek ke bucket tujuan. Format: `acs:ram::uid:role/rolename`.', required=True)
parser.add_argument('--inventory_id', help='Nama daftar inventaris.', required=True)
def main():
# Parsing parameter baris perintah untuk mendapatkan nilai yang ditentukan oleh pengguna.
args = parser.parse_args()
# Dapatkan kredensial akses dari variabel lingkungan untuk otentikasi.
credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
# Gunakan konfigurasi default dari SDK untuk membuat objek konfigurasi dan tentukan penyedia kredensial.
cfg = oss.config.load_default()
cfg.credentials_provider = credentials_provider
# Tentukan atribut wilayah objek konfigurasi berdasarkan parameter baris perintah yang ditentukan oleh pengguna.
cfg.region = args.region
# Jika titik akhir kustom disediakan, ubah parameter titik akhir dalam objek konfigurasi.
if args.endpoint is not None:
cfg.endpoint = args.endpoint
# Gunakan konfigurasi sebelumnya untuk menginisialisasi instance OSSClient dan memungkinkan instance berinteraksi dengan OSS.
client = oss.Client(cfg)
# Kirim permintaan untuk membuat daftar inventaris untuk sebuah bucket.
result = client.put_bucket_inventory(oss.PutBucketInventoryRequest(
bucket=args.bucket, # Nama bucket.
inventory_id=args.inventory_id, # ID daftar inventaris.
inventory_configuration=oss.InventoryConfiguration(
included_object_versions='All', # Tentukan bahwa daftar inventaris mencakup semua versi objek.
optional_fields=oss.OptionalFields(
fields=[ # Bidang opsional, seperti ukuran dan waktu modifikasi terakhir objek.
oss.InventoryOptionalFieldType.SIZE,
oss.InventoryOptionalFieldType.LAST_MODIFIED_DATE,
],
),
id=args.inventory_id, # ID daftar inventaris.
is_enabled=True, # Tentukan apakah akan mengaktifkan fitur daftar inventaris untuk bucket. Dalam contoh ini, fitur daftar inventaris diaktifkan.
destination=oss.InventoryDestination(
oss_bucket_destination=oss.InventoryOSSBucketDestination(
format=oss. InventoryFormatType.CSV, # Tentukan bahwa format keluaran daftar inventaris adalah CSV.
account_id=args.user_id, # ID akun pengguna.
role_arn=args.arn, # ARN dari peran RAM, yang memiliki izin untuk membaca objek di bucket sumber dan menulis objek ke bucket tujuan.
bucket=f'acs:oss:::{args.bucket}', # Nama bucket tujuan.
prefix='aaa', # Tentukan awalan yang terkandung dalam nama objek yang ingin Anda masukkan dalam daftar inventaris.
),
),
schedule=oss.InventorySchedule(
frequency=oss. InventoryFrequencyType.DAILY, # Tentukan apakah daftar inventaris dihasilkan setiap hari atau mingguan. Dalam contoh ini, daftar inventaris dihasilkan setiap hari.
),
filter=oss.InventoryFilter(
lower_size_bound=1024, # Tentukan ukuran minimum objek yang ingin Anda masukkan dalam daftar inventaris. Unit: byte.
upper_size_bound=1048576, # Tentukan ukuran maksimum objek yang ingin Anda masukkan dalam daftar inventaris. Unit: byte.
storage_class='ColdArchive', # Tentukan kelas penyimpanan objek yang ingin Anda masukkan dalam daftar inventaris.
prefix='aaa', # Tentukan awalan yang digunakan untuk menyaring daftar inventaris.
last_modify_begin_time_stamp=1637883649, # Tentukan awal rentang waktu saat objek terakhir dimodifikasi.
last_modify_end_time_stamp=1638347592, # Tentukan akhir rentang waktu saat objek terakhir dimodifikasi.
),
),
))
# Tampilkan kode status HTTP dari operasi dan ID permintaan untuk memeriksa status permintaan.
print(f'kode status: {result.status_code},'
f' ID permintaan: {result.request_id},'
)
# Panggil fungsi utama untuk memulai logika pemrosesan ketika skrip dijalankan langsung.
if __name__ == "__main__":
main() # Tentukan titik masuk dalam fungsi skrip. Alur program kontrol dimulai di sini.Tanyakan daftar inventaris sebuah bucket
Kode contoh berikut menunjukkan cara menanyakan daftar inventaris sebuah bucket:
import argparse
import alibabacloud_oss_v2 as oss
# Buat parser parameter baris perintah dan jelaskan tujuan dari skrip. Contoh ini menjelaskan cara menanyakan daftar inventaris sebuah bucket.
parser = argparse.ArgumentParser(description="get bucket inventory sample")
# Tentukan parameter baris perintah, termasuk wilayah, nama bucket, titik akhir, dan ID daftar inventaris 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('--inventory_id', help='Nama daftar inventaris.', required=True)
def main():
# Parsing parameter baris perintah untuk mendapatkan nilai yang ditentukan oleh pengguna.
args = parser.parse_args()
# Dapatkan kredensial akses dari variabel lingkungan untuk otentikasi.
credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
# Gunakan konfigurasi default dari SDK untuk membuat objek konfigurasi dan tentukan penyedia kredensial.
cfg = oss.config.load_default()
cfg.credentials_provider = credentials_provider
# Tentukan atribut wilayah objek konfigurasi berdasarkan parameter baris perintah yang ditentukan oleh pengguna.
cfg.region = args.region
# Jika titik akhir kustom disediakan, ubah parameter titik akhir dalam objek konfigurasi.
if args.endpoint is not None:
cfg.endpoint = args.endpoint
# Gunakan konfigurasi sebelumnya untuk menginisialisasi instance OSSClient dan memungkinkan instance berinteraksi dengan OSS.
client = oss.Client(cfg)
# Kirim permintaan untuk menanyakan daftar inventaris bucket.
result = client.get_bucket_inventory(oss.GetBucketInventoryRequest(
bucket=args.bucket, # Nama bucket.
inventory_id=args.inventory_id, # ID daftar inventaris.
))
# Tampilkan kode status HTTP dari operasi dan ID permintaan untuk memeriksa status permintaan.
print(f'kode status: {result.status_code},'
f' ID permintaan: {result.request_id},'
f' versi objek yang disertakan: {result.inventory_configuration.included_object_versions},'
f' ID: {result.inventory_configuration.id},'
f' diaktifkan: {result.inventory_configuration.is_enabled},'
f' ID akun: {result.inventory_configuration.destination.oss_bucket_destination.account_id},'
f' ARN peran: {result.inventory_configuration.destination.oss_bucket_destination.role_arn},'
f' bucket: {result.inventory_configuration.destination.oss_bucket_destination.bucket},'
f' awalan: {result.inventory_configuration.destination.oss_bucket_destination.prefix},'
# Dua baris perintah berikut menggambarkan informasi tentang konfigurasi enkripsi. Anda bisa menghapusnya jika tidak membutuhkannya.
# f' ID kunci: {result.inventory_configuration.destination.oss_bucket_destination.encryption.sse_kms.key_id},'
# f' SSE OSS: {result.inventory_configuration.destination.oss_bucket_destination.encryption.sse_oss},'
f' batas ukuran bawah: {result.inventory_configuration.filter.lower_size_bound},'
f' batas ukuran atas: {result.inventory_configuration.filter.upper_size_bound},'
f' kelas penyimpanan: {result.inventory_configuration.filter.storage_class},'
f' awalan: {result.inventory_configuration.filter.prefix},'
f' stempel waktu awal modifikasi terakhir: {result.inventory_configuration.filter.last_modify_begin_time_stamp},'
f' stempel waktu akhir modifikasi terakhir: {result.inventory_configuration.filter.last_modify_end_time_stamp},'
)
# Panggil fungsi utama untuk memulai logika pemrosesan ketika skrip dijalankan langsung.
if __name__ == "__main__":
main() # Tentukan titik masuk dalam fungsi skrip. Alur program kontrol dimulai di sini.Catat daftar inventaris sebuah bucket
Anda dapat menanyakan hingga 100 daftar inventaris dalam satu permintaan. Jika Anda ingin menanyakan lebih dari 100 daftar, kirim beberapa permintaan dan gunakan token yang dikembalikan sebagai parameter untuk permintaan berikutnya.
Kode contoh berikut menunjukkan cara mencatat daftar inventaris sebuah bucket:
import argparse
import alibabacloud_oss_v2 as oss
# Buat parser parameter baris perintah dan jelaskan tujuan dari skrip. Contoh ini menjelaskan cara mencatat daftar inventaris sebuah bucket.
parser = argparse.ArgumentParser(description="list bucket inventory sample")
# Opsional. Tentukan parameter baris perintah, termasuk wilayah, nama bucket, titik akhir, dan ID daftar inventaris.
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('--inventory_id', help='Nama daftar inventaris.', required=False) # ID daftar inventaris bersifat opsional dalam skenario ini.
def main():
# Parsing parameter baris perintah untuk mendapatkan nilai yang ditentukan oleh pengguna.
args = parser.parse_args()
# Dapatkan kredensial akses dari variabel lingkungan untuk otentikasi.
credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
# Gunakan konfigurasi default dari SDK untuk membuat objek konfigurasi dan tentukan penyedia kredensial.
cfg = oss.config.load_default()
cfg.credentials_provider = credentials_provider
# Tentukan atribut wilayah objek konfigurasi berdasarkan parameter baris perintah yang ditentukan oleh pengguna.
cfg.region = args.region
# Jika titik akhir kustom disediakan, ubah parameter titik akhir dalam objek konfigurasi.
if args.endpoint is not None:
cfg.endpoint = args.endpoint
# Gunakan konfigurasi sebelumnya untuk menginisialisasi instance OSSClient dan memungkinkan instance berinteraksi dengan OSS.
client = oss.Client(cfg)
# Kirim permintaan untuk mencatat daftar inventaris bucket.
result = client.list_bucket_inventory(oss.ListBucketInventoryRequest(
bucket=args.bucket, # Nama bucket.
))
# Tampilkan kode status HTTP dari operasi dan ID permintaan untuk memeriksa status permintaan.
print(f'kode status: {result.status_code},'
f' ID permintaan: {result.request_id},'
f' hasil konfigurasi daftar inventaris: {result.list_inventory_configurations_result},'
f' terpotong: {result.list_inventory_configurations_result.is_truncated},'
f' token kelanjutan berikutnya: {result.list_inventory_configurations_result.next_continuation_token},'
)
# Jika ada daftar inventaris, telusuri dan tampilkan detail setiap daftar inventaris.
if result.list_inventory_configurations_result.inventory_configurations:
for r in result.list_inventory_configurations_result.inventory_configurations:
print(f'hasil: '
f'versi objek yang disertakan: {r.included_object_versions}, '
f'bidang opsional: {r.optional_fields}, '
f'ID: {r.id}, '
f'diaktifkan: {r.is_enabled}, '
f'tujuan: {r.destination}, '
f'jadwal: {r.schedule}, '
f'filter: {r.filter}'
)
# Panggil fungsi utama untuk memulai logika pemrosesan ketika skrip dijalankan langsung.
if __name__ == "__main__":
main() # Tentukan titik masuk dalam fungsi skrip. Alur program kontrol dimulai di sini.Hapus daftar inventaris sebuah bucket
Kode contoh berikut menunjukkan cara menghapus daftar inventaris sebuah bucket:
import argparse
import alibabacloud_oss_v2 as oss
# Buat parser parameter baris perintah dan jelaskan tujuan dari skrip. Contoh ini menjelaskan cara menghapus daftar inventaris sebuah bucket.
parser = argparse.ArgumentParser(description="delete bucket inventory sample")
# Tentukan parameter baris perintah, termasuk wilayah, nama bucket, titik akhir, dan ID daftar inventaris 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('--inventory_id', help='Nama daftar inventaris.', required=True)
def main():
# Parsing parameter baris perintah untuk mendapatkan nilai yang ditentukan oleh pengguna.
args = parser.parse_args()
# Dapatkan kredensial akses dari variabel lingkungan untuk otentikasi.
credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
# Gunakan konfigurasi default dari SDK untuk membuat objek konfigurasi dan tentukan penyedia kredensial.
cfg = oss.config.load_default()
cfg.credentials_provider = credentials_provider
# Tentukan atribut wilayah objek konfigurasi berdasarkan parameter baris perintah yang ditentukan oleh pengguna.
cfg.region = args.region
# Jika titik akhir kustom disediakan, ubah parameter titik akhir dalam objek konfigurasi.
if args.endpoint is not None:
cfg.endpoint = args.endpoint
# Gunakan konfigurasi sebelumnya untuk menginisialisasi instance OSSClient dan memungkinkan instance berinteraksi dengan OSS.
client = oss.Client(cfg)
# Kirim permintaan untuk menghapus daftar inventaris sebuah bucket.
result = client.delete_bucket_inventory(oss.DeleteBucketInventoryRequest(
bucket=args.bucket, # Nama bucket.
inventory_id=args.inventory_id, # ID daftar inventaris.
))
# Tampilkan kode status HTTP dari operasi dan ID permintaan untuk memeriksa status permintaan.
print(f'kode status: {result.status_code},'
f' ID permintaan: {result.request_id},'
)
# Panggil fungsi utama untuk memulai logika pemrosesan ketika skrip dijalankan langsung.
if __name__ == "__main__":
main() # Tentukan titik masuk dalam fungsi skrip. Alur program kontrol dimulai di sini.