Gunakan OSS Python SDK v2 untuk mengelola kebijakan retensi kepatuhan write-once-read-many (WORM) pada bucket. Kebijakan retensi memberlakukan imutabilitas terhadap objek selama periode retensi, yang dapat berkisar antara 1 hari hingga 70 tahun.
Topik ini mencakup lima operasi: membuat, mengkueri, mengunci, memperpanjang, dan membatalkan kebijakan retensi.
Catatan penggunaan
Semua contoh menggunakan wilayah cn-hangzhou. Secara default, klien terhubung melalui titik akhir publik. Untuk mengakses OSS dari layanan Alibaba Cloud lainnya di wilayah yang sama, atur cfg.endpoint ke titik akhir internal. Untuk daftar lengkap titik akhir, lihat Wilayah dan titik akhir.
Prasyarat
Sebelum memulai, pastikan Anda telah memiliki:
Bucket OSS
Python SDK v2 (
alibabacloud_oss_v2) yang telah diinstalKredensial akses yang dikonfigurasi sebagai variabel lingkungan
Kueri kebijakan retensi
Panggil get_bucket_worm() untuk mengambil konfigurasi dan status saat ini dari kebijakan retensi.
import argparse
import alibabacloud_oss_v2 as oss
parser = argparse.ArgumentParser(description="Query the WORM retention policy of a bucket")
parser.add_argument('--region', required=True, help='Region ID, e.g. cn-hangzhou')
parser.add_argument('--bucket', required=True, help='Bucket name')
parser.add_argument('--endpoint', help='Custom endpoint (optional)')
def main():
args = parser.parse_args()
credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
cfg = oss.config.load_default()
cfg.credentials_provider = credentials_provider
cfg.region = args.region
if args.endpoint is not None:
cfg.endpoint = args.endpoint
client = oss.Client(cfg)
result = client.get_bucket_worm(oss.GetBucketWormRequest(
bucket=args.bucket,
))
print(f'status code: {result.status_code},'
f' request id: {result.request_id},'
f' worm id: {result.worm_configuration.worm_id},'
f' state: {result.worm_configuration.state},'
f' retention period in days: {result.worm_configuration.retention_period_in_days},'
f' creation date: {result.worm_configuration.creation_date},'
f' expiration date: {result.worm_configuration.expiration_date},'
)
if __name__ == "__main__":
main()Objek worm_configuration mengembalikan bidang-bidang berikut:
| Bidang | Deskripsi |
|---|---|
worm_id | ID unik kebijakan retensi |
state | Status saat ini dari fitur WORM |
retention_period_in_days | Periode retensi dalam hari |
creation_date | Tanggal kebijakan dibuat |
expiration_date | Tanggal kedaluwarsa kebijakan |
Perpanjang periode retensi
Panggil extend_bucket_worm() untuk menambah periode retensi kebijakan retensi.
import argparse
import alibabacloud_oss_v2 as oss
parser = argparse.ArgumentParser(description="Extend the retention period of a locked WORM policy")
parser.add_argument('--region', required=True, help='Region ID, e.g. cn-hangzhou')
parser.add_argument('--bucket', required=True, help='Bucket name')
parser.add_argument('--endpoint', help='Custom endpoint (optional)')
parser.add_argument('--worm_id', required=True, help='Worm ID of the locked policy')
parser.add_argument('--retention_period_in_days', required=True, help='New retention period in days')
def main():
args = parser.parse_args()
credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()
cfg = oss.config.load_default()
cfg.credentials_provider = credentials_provider
cfg.region = args.region
if args.endpoint is not None:
cfg.endpoint = args.endpoint
client = oss.Client(cfg)
result = client.extend_bucket_worm(oss.ExtendBucketWormRequest(
bucket=args.bucket,
worm_id=args.worm_id,
extend_worm_configuration=oss.ExtendWormConfiguration(
retention_period_in_days=int(args.retention_period_in_days),
),
))
print(f'status code: {result.status_code},'
f' request id: {result.request_id}'
)
if __name__ == "__main__":
main()Langkah selanjutnya
Untuk error umum terkait kebijakan retensi, lihat 27-WORM.