Di Object Storage Service (OSS), kebijakan retensi menyediakan perlindungan Write Once Read Many (WORM) untuk mencegah data dimodifikasi atau dihapus. Jika Anda ingin mencegah semua pengguna, termasuk pemilik resource, dari memodifikasi atau menghapus objek dalam bucket OSS selama periode tertentu, Anda dapat mengonfigurasi kebijakan retensi data untuk bucket tersebut. Sebelum periode retensi berakhir, Anda hanya dapat mengunggah atau membaca objek dari bucket. Objek hanya dapat dimodifikasi atau dihapus setelah periode retensi berakhir.
Catatan penggunaan
Sebelum mengonfigurasi kebijakan retensi, pastikan Anda memahami fitur ini terlebih dahulu. Untuk informasi selengkapnya, lihat Kebijakan retensi.
Pada topik ini, digunakan titik akhir publik wilayah China (Hangzhou). Jika Anda mengakses OSS dari layanan Alibaba Cloud lain 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.
Anda tidak dapat mengonfigurasi kebijakan retensi data (WORM) untuk bucket yang telah mengaktifkan fitur versioning.
Buat kebijakan retensi
Kode contoh berikut menunjukkan cara membuat kebijakan retensi:
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# Dapatkan 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. Misalnya, jika bucket Anda berada di wilayah China (Hangzhou), atur titik akhir menjadi https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Tentukan ID wilayah yang sesuai dengan titik akhir tersebut. Contoh: cn-hangzhou. Parameter ini wajib jika Anda menggunakan algoritma signature V4.
region = "cn-hangzhou"
# Ganti yourBucketName dengan nama bucket Anda.
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)
# Buat kebijakan retensi dan atur periode retensi menjadi 1 hari.
result = bucket.init_bucket_worm(1)
# Tampilkan ID kebijakan retensi.
print(result.worm_id)Batalkan kebijakan retensi yang belum dikunci
Kode contoh berikut menunjukkan cara membatalkan kebijakan retensi yang belum dikunci:
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# Dapatkan 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 ID wilayah yang sesuai dengan titik akhir tersebut. Contoh: cn-hangzhou. Parameter ini wajib jika Anda menggunakan algoritma signature V4.
region = "cn-hangzhou"
# Ganti yourBucketName dengan nama bucket Anda.
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)
# Batalkan kebijakan retensi yang belum dikunci.
bucket.abort_bucket_worm()Kunci kebijakan retensi
Kode contoh berikut menunjukkan cara mengunci kebijakan retensi:
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# Dapatkan 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 ID wilayah yang sesuai dengan titik akhir tersebut. Contoh: cn-hangzhou. Parameter ini wajib jika Anda menggunakan algoritma signature V4.
region = "cn-hangzhou"
# Ganti yourBucketName dengan nama bucket Anda.
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)
# Kunci kebijakan retensi.
bucket.complete_bucket_worm('<yourWormId>')Ambil kebijakan retensi data
Kode contoh berikut menunjukkan cara mengambil kebijakan retensi data:
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Atur titik akhir untuk 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"
# Atur wilayah yang sesuai dengan titik akhir tersebut, seperti cn-hangzhou. Catatan: Parameter ini wajib untuk Signature V4.
region = "cn-hangzhou"
# Atur yourBucketName menjadi nama bucket Anda.
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)
# Ambil kebijakan retensi data.
result = bucket.get_bucket_worm()
# Tampilkan ID kebijakan retensi data.
print(result.worm_id)
# Tampilkan status kebijakan retensi data. Statusnya adalah "InProgress" jika kebijakan belum dikunci dan "Locked" jika kebijakan sudah dikunci.
print(result.state)
# Tampilkan periode retensi untuk objek.
print(result.retention_period_days)
# Tampilkan waktu pembuatan kebijakan retensi data.
print(result.creation_date)Perpanjang periode retensi objek
Kode contoh berikut menunjukkan cara memperpanjang periode retensi objek dalam kebijakan retensi data yang telah dikunci:
# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
# Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah diatur.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())
# Atur endpoint ke 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, seperti cn-hangzhou. Parameter ini wajib untuk signature V4.
region = "cn-hangzhou"
# Ganti yourBucketName dengan nama bucket Anda.
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)
# Perpanjang periode retensi objek dalam kebijakan retensi data yang telah dikunci.
bucket.extend_bucket_worm('<yourWormId>', 2)Referensi
Untuk contoh kode lengkap mengenai kebijakan retensi data, lihat contoh di GitHub.
Untuk informasi selengkapnya tentang pembuatan kebijakan retensi data, lihat InitiateBucketWorm.
Untuk informasi selengkapnya tentang pembatalan kebijakan retensi data yang belum dikunci, lihat AbortBucketWorm.
Untuk informasi selengkapnya tentang penguncian kebijakan retensi data, lihat CompleteBucketWorm.
Untuk informasi selengkapnya tentang pengambilan kebijakan retensi data, lihat GetBucketWorm.
Untuk informasi selengkapnya tentang perpanjangan periode retensi objek, lihat ExtendBucketWorm.