Topik ini menjelaskan cara menambahkan, melihat, mendaftar, dan menghapus konfigurasi inventaris bucket.
Catatan penggunaan
Pada topik ini, digunakan titik akhir publik wilayah China (Hangzhou). 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 Regions and endpoints.
Pada topik ini, kredensial akses diperoleh dari variabel lingkungan. Untuk informasi selengkapnya mengenai cara mengonfigurasi kredensial akses, lihat Configure access credentials using OSS SDK for 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 Initialization.
Pastikan Anda memiliki izin untuk menambahkan, melihat, mendaftar, dan menghapus konfigurasi inventaris. Pemilik bucket secara default memiliki izin tersebut. Jika Anda tidak memiliki izin ini, mintalah kepada pemilik bucket.
Anda dapat mengonfigurasi hingga 1.000 aturan inventaris untuk satu bucket.
Bucket sumber tempat Anda mengonfigurasi aturan inventaris dan bucket tujuan tempat file manifest disimpan harus berada di wilayah yang sama.
Tambahkan konfigurasi inventaris
Kode berikut menunjukkan cara menambahkan konfigurasi inventaris ke bucket:
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
from oss2.models import (InventoryConfiguration,
InventoryFilter,
InventorySchedule,
InventoryDestination,
InventoryBucketDestination,
INVENTORY_INCLUDED_OBJECT_VERSIONS_CURRENT,
INVENTORY_FREQUENCY_DAILY,
INVENTORY_FORMAT_CSV,
FIELD_SIZE,
FIELD_LAST_MODIFIED_DATE,
FIELD_STORAG_CLASS,
FIELD_ETAG,
FIELD_IS_MULTIPART_UPLOADED,
FIELD_ENCRYPTION_STATUS)
# Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Tentukan Endpoint untuk wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur Endpoint ke https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Tentukan informasi wilayah yang sesuai dengan Endpoint, misalnya cn-hangzhou. Perhatikan bahwa parameter ini wajib untuk tanda tangan V4.
region = "cn-hangzhou"
# Atur nama bucket menjadi examplebucket.
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)
# Tentukan ID akun yang diberi izin oleh pemilik bucket. Contoh: 1283641033516515
account_id = 'yourtBucketDestinationAccountId'
# Tentukan nama role yang memiliki izin untuk membaca semua file dari bucket sumber dan menulis file ke bucket tujuan. Contoh: acs:ram::1283641033516515:role/AliyunOSSRole
role_arn = 'yourBucketDestinationRoleArn'
# Tentukan nama bucket tempat hasil inventaris disimpan.
dest_bucket_name = 'yourDestinationBucketName'
# Atur nama aturan inventaris.
inventory_id = "inventory1"
# Tentukan properti objek yang akan dimasukkan dalam laporan inventaris.
optional_fields = [FIELD_SIZE, FIELD_LAST_MODIFIED_DATE, FIELD_STORAG_CLASS,
FIELD_ETAG, FIELD_IS_MULTIPART_UPLOADED, FIELD_ENCRYPTION_STATUS]
# Buat konfigurasi untuk bucket tujuan tempat file manifest disimpan.
bucket_destination = InventoryBucketDestination(
# AccountId pengguna yang memiliki bucket tujuan.
account_id=account_id,
# ARN role bucket tujuan.
role_arn=role_arn,
# Nama bucket tujuan.
bucket=dest_bucket_name,
# Tentukan format inventaris.
inventory_format=INVENTORY_FORMAT_CSV,
# Awalan path tempat hasil inventaris disimpan.
prefix='destination-prefix',
# Untuk mengenkripsi inventaris menggunakan KMS, gunakan pengaturan berikut.
# sse_kms_encryption=InventoryServerSideEncryptionKMS("test-kms-id"),
# Untuk mengenkripsi inventaris menggunakan Enkripsi sisi server OSS, gunakan pengaturan berikut.
# sse_oss_encryption=InventoryServerSideEncryptionOSS()
)
# Buat konfigurasi inventaris.
inventory_configuration = InventoryConfiguration(
# Atur ID konfigurasi inventaris.
inventory_id=inventory_id,
# Menentukan apakah konfigurasi inventaris diaktifkan. Nilai yang valid: true dan false.
is_enabled=True,
# Atur jadwal pembuatan inventaris. Contoh berikut mengatur frekuensi menjadi harian. WEEKLY berarti sekali seminggu, dan DAILY berarti sekali sehari.
inventory_schedule=InventorySchedule(frequency=INVENTORY_FREQUENCY_DAILY),
# Atur versi objek yang dimasukkan dalam inventaris menjadi versi saat ini. Jika Anda mengatur parameter ini ke INVENTORY_INCLUDED_OBJECT_VERSIONS_ALL, semua versi objek akan dimasukkan. Pengaturan ini hanya berlaku ketika Pengendalian versi diaktifkan.
included_object_versions=INVENTORY_INCLUDED_OBJECT_VERSIONS_CURRENT,
# Atur awalan untuk memfilter objek dalam inventaris.
# inventory_filter=InventoryFilter(prefix="obj-prefix"),
# Atur kondisi filter untuk inventaris. Misalnya, stempel waktu UNIX awal untuk memfilter file berdasarkan waktu modifikasi terakhir adalah 1637883649.
inventory_filter=InventoryFilter(
# Awalan yang dicocokkan untuk aturan filter.
"obj-prefix",
# Stempel waktu UNIX awal untuk memfilter file berdasarkan waktu modifikasi terakhir. Satuan: detik.
1637883649,
# Stempel waktu UNIX akhir untuk memfilter file berdasarkan waktu modifikasi terakhir. Satuan: detik.
1638347592,
# Ukuran minimum file yang difilter. Satuan: byte.
1024,
# Ukuran maksimum file yang difilter. Satuan: byte.
1048576,
# Kelas penyimpanan file yang difilter. Anda dapat menentukan beberapa kelas penyimpanan.
'Standard,IA'),
# Tentukan properti objek yang akan dimasukkan dalam inventaris.
optional_fields=optional_fields,
inventory_destination=InventoryDestination(bucket_destination=bucket_destination))
# Unggah konfigurasi inventaris.
result = bucket.put_bucket_inventory_configuration(inventory_configuration)
print(result.status)Lihat konfigurasi inventaris
Kode berikut menunjukkan cara melihat konfigurasi inventaris bucket:
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
import os
# Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Tentukan Endpoint untuk wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur Endpoint ke https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Tentukan informasi wilayah yang sesuai dengan Endpoint, misalnya cn-hangzhou. Perhatikan bahwa parameter ini wajib untuk tanda tangan V4.
region = "cn-hangzhou"
# Atur nama bucket menjadi examplebucket.
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)
# Tentukan nama aturan inventaris.
inventory_id = "inventory1"
# Peroleh konfigurasi inventaris.
result = bucket.get_bucket_inventory_configuration(inventory_id=inventory_id)
# Cetak informasi konfigurasi inventaris.
print('======inventory configuration======')
print('inventory_id', result.inventory_id)
print('is_enabled', result.is_enabled)
print('frequency', result.inventory_schedule.frequency)
print('included_object_versions', result.included_object_versions)
print('inventory_filter prefix', result.inventory_filter.prefix)
print('fields', result.optional_fields)
bucket_destin = result.inventory_destination.bucket_destination
print('===bucket destination===')
print('account_id', bucket_destin.account_id)
print('role_arn', bucket_destin.role_arn)
print('bucket', bucket_destin.bucket)
print('format', bucket_destin.inventory_format)
print('prefix', bucket_destin.prefix)
if bucket_destin.sse_kms_encryption is not None:
print('server side encryption by kms, key id:', bucket_destin.sse_kms_encryption.key_id)
elif bucket_destin.sse_oss_encryption is not None:
print('server side encryption by oss.')Daftar konfigurasi inventaris
Satu permintaan dapat mengambil maksimal 100 konfigurasi inventaris. Untuk mengambil lebih dari 100 konfigurasi, Anda harus mengirimkan beberapa permintaan. Gunakan token yang dikembalikan dari permintaan sebelumnya sebagai parameter untuk permintaan berikutnya.
Kode berikut menunjukkan cara mendaftar konfigurasi inventaris bucket:
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
import os
# Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Tentukan Endpoint untuk wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur Endpoint ke https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Tentukan informasi wilayah yang sesuai dengan Endpoint, misalnya cn-hangzhou. Perhatikan bahwa parameter ini wajib untuk tanda tangan V4.
region = "cn-hangzhou"
# Atur nama bucket menjadi examplebucket.
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)
# Cetak informasi konfigurasi inventaris.
def print_inventory_configuration(configuration):
print('======inventory configuration======')
print('inventory_id', configuration.inventory_id)
print('is_enabled', configuration.is_enabled)
print('frequency', configuration.inventory_schedule.frequency)
print('included_object_versions', configuration.included_object_versions)
print('inventory_filter prefix', configuration.inventory_filter.prefix)
print('fields', configuration.optional_fields)
bucket_destin = configuration.inventory_destination.bucket_destination
print('===bucket destination===')
print('account_id', bucket_destin.account_id)
print('role_arn', bucket_destin.role_arn)
print('bucket', bucket_destin.bucket)
print('format', bucket_destin.inventory_format)
print('prefix', bucket_destin.prefix)
if bucket_destin.sse_kms_encryption is not None:
print('server side encryption by kms, key id:', bucket_destin.sse_kms_encryption.key_id)
elif bucket_destin.sse_oss_encryption is not None:
print('server side encryption by oss.')
# Daftar semua konfigurasi inventaris.
# Jika terdapat lebih dari 100 konfigurasi, hasilnya dipaginasi. Informasi paginasi disimpan dalam kelas: <oss2.models.ListInventoryConfigurationResult>.
continuation_token = None
while 1:
result = bucket.list_bucket_inventory_configurations(continuation_token=continuation_token)
# Menunjukkan apakah hasil operasi daftar saat ini dipaginasi.
print('is truncated', result.is_truncated)
# Token yang dibawa dalam operasi daftar saat ini.
print('continuaiton_token', result.continuaiton_token)
# Token yang harus dibawa untuk operasi daftar berikutnya.
print('next_continuation_token', result.next_continuation_token)
# Cetak informasi konfigurasi inventaris.
for inventory_config in result.inventory_configurations:
print_inventory_configuration(inventory_config)
# Jika operasi daftar saat ini dipaginasi, lanjutkan pendaftaran dan bawa token paginasi.
if result.is_truncated:
continuation_token = result.next_continuation_token
else:
breakHapus konfigurasi inventaris
Kode berikut menunjukkan cara menghapus konfigurasi inventaris bucket:
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
import os
# Peroleh kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Tentukan Endpoint untuk wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), atur Endpoint ke https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Tentukan informasi wilayah yang sesuai dengan Endpoint, misalnya cn-hangzhou. Perhatikan bahwa parameter ini wajib untuk tanda tangan V4.
region = "cn-hangzhou"
# Atur nama bucket menjadi examplebucket.
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)
# Tentukan nama aturan inventaris.
inventory_id = "inventory1"
# Hapus konfigurasi inventaris.
bucket.delete_bucket_inventory_configuration(inventory_id)Referensi
Untuk kode contoh lengkap mengenai inventaris bucket, lihat GitHub example.
Untuk informasi selengkapnya mengenai operasi API untuk menambahkan konfigurasi inventaris bucket, lihat PutBucketInventory.
Untuk informasi selengkapnya mengenai operasi API untuk melihat konfigurasi inventaris bucket, lihat GetBucketInventory.
Untuk informasi selengkapnya mengenai operasi API untuk mendaftar konfigurasi inventaris bucket, lihat ListBucketInventory.
Untuk informasi selengkapnya mengenai operasi API untuk menghapus konfigurasi inventaris bucket, lihat DeleteBucketInventory.