全部产品
Search
文档中心

Object Storage Service:Konversi kelas penyimpanan objek menggunakan OSS SDK untuk Python 1.0

更新时间:Aug 12, 2025

Object Storage Service (OSS) menyediakan berbagai kelas penyimpanan untuk mendukung skenario penyimpanan data mulai dari data panas hingga data dingin, termasuk Standard, Infrequent Access (IA), Arsip, Penyimpanan Arsip Dingin, dan Deep Cold Archive. Setelah sebuah objek dibuat di OSS, kontennya tidak dapat diubah. Untuk mengonversi kelas penyimpanan suatu objek, Anda harus menggunakan metode Bucket.CopyObject untuk menyalin objek tersebut dan membuat objek baru dengan kelas penyimpanan yang diinginkan.

Catatan penggunaan

  • Dalam topik ini, titik akhir publik wilayah China (Hangzhou) digunakan. Jika Anda ingin mengakses OSS dari layanan Alibaba Cloud lainnya di wilayah yang sama, gunakan titik akhir internal. Untuk informasi lebih lanjut tentang wilayah dan titik akhir OSS, lihat Wilayah dan titik akhir.

  • Dalam topik ini, kredensial akses diperoleh dari variabel lingkungan. Untuk informasi lebih lanjut tentang cara mengonfigurasi kredensial akses, lihat Konfigurasi kredensial akses (Python SDK V1).

  • Dalam topik ini, instans OSSClient dibuat menggunakan titik akhir OSS. Jika Anda ingin membuat instans OSSClient dengan nama domain kustom atau Layanan Token Keamanan (STS), lihat Inisialisasi (Python SDK V1).

  • Untuk mengonversi kelas penyimpanan suatu objek, Anda memerlukan izin oss:GetObject, oss:PutObject, dan oss:RestoreObject. Untuk informasi lebih lanjut, lihat Lampirkan kebijakan kustom ke Pengguna RAM.

Contoh

Penting

Jika Anda mengonversi kelas penyimpanan objek IA, Arsip, Penyimpanan Arsip Dingin, atau Deep Cold Archive, atau menghapus objek sebelum durasi penyimpanan minimum berakhir, Anda akan dikenakan biaya untuk penggunaan penyimpanan objek yang disimpan kurang dari durasi penyimpanan minimum. Untuk informasi lebih lanjut, lihat Bagaimana saya dikenakan biaya untuk objek yang durasi penyimpanannya kurang dari durasi penyimpanan minimum?.

Konversi kelas penyimpanan objek dari Standar atau IA ke Arsip, Penyimpanan Arsip Dingin, atau Deep Cold Archive

Berikut adalah contoh kode yang menunjukkan cara mengonversi kelas penyimpanan objek dari Standar atau IA ke Arsip, Penyimpanan Arsip Dingin, atau Deep Cold Archive:

# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
import os
# Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode sampel, pastikan bahwa 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. Contoh: cn-hangzhou. Parameter ini diperlukan jika Anda menggunakan algoritma tanda tangan V4.
region = "cn-hangzhou"

# Tentukan nama bucket Anda.
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)

# Tentukan jalur lengkap objek. Jangan sertakan nama bucket dalam jalur lengkap. Contoh: exampledir/exampleobject.txt. 
# Pastikan bahwa kelas penyimpanan objek adalah Standar atau IA. 
object_name = 'exampledir/exampleobject.txt'

# Konversi kelas penyimpanan objek menjadi Arsip dengan menetapkan header x-oss-storage-class ke oss2.BUCKET_STORAGE_CLASS_ARCHIVE. 
headers = {'x-oss-storage-class': oss2.BUCKET_STORAGE_CLASS_ARCHIVE}
# Konversi kelas penyimpanan objek menjadi Penyimpanan Arsip Dingin dengan menetapkan header x-oss-storage-class ke oss2.BUCKET_STORAGE_CLASS_COLD_ARCHIVE. 
# headers = {'x-oss-storage-class': oss2.BUCKET_STORAGE_CLASS_COLD_ARCHIVE}
# Konversi kelas penyimpanan objek menjadi Deep Cold Archive dengan menetapkan header x-oss-storage-class ke BUCKET_STORAGE_CLASS_DEEP_COLD_ARCHIVE 
# headers = {'x-oss-storage-class': oss2.models.BUCKET_STORAGE_CLASS_DEEP_COLD_ARCHIVE}
# Konversi kelas penyimpanan objek. 
bucket.copy_object(bucket.bucket_name, object_name, object_name, headers)                    

Konversi kelas penyimpanan objek dari Arsip ke Standar atau IA

Berikut adalah contoh kode yang menunjukkan cara mengonversi kelas penyimpanan objek dari Arsip ke Standar atau IA:

# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
import os
import time
# Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode sampel, pastikan bahwa 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. Contoh: cn-hangzhou. Parameter ini diperlukan jika Anda menggunakan algoritma tanda tangan V4.
region = "cn-hangzhou"

# Tentukan nama bucket Anda.
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)

# Tentukan jalur lengkap objek. Jangan sertakan nama bucket dalam jalur lengkap. Contoh: exampledir/exampleobject.txt. 
# Pastikan bahwa kelas penyimpanan objek adalah Arsip. 
object_name = 'exampledir/exampleobject.txt'

# Dapatkan metadata objek. 
meta = bucket.head_object(object_name)

# Pulihkan objek. Waktu yang diperlukan untuk memulihkan objek bervariasi tergantung pada ukuran objek. 
if meta.resp.headers['x-oss-storage-class'] == oss2.BUCKET_STORAGE_CLASS_ARCHIVE:
    bucket.restore_object(object_name)
    while True:
        meta = bucket.head_object(object_name)
        if meta.resp.headers['x-oss-restore'] == 'ongoing-request="true"':
            time.sleep(5)
        else:
            break

# Konversi kelas penyimpanan objek menjadi Standar dengan menetapkan header x-oss-storage-class ke oss2.BUCKET_STORAGE_CLASS_STANDARD. 
headers = {'x-oss-storage-class': oss2.BUCKET_STORAGE_CLASS_STANDARD}
# Konversi kelas penyimpanan objek menjadi IA dengan menetapkan header x-oss-storage-class ke oss2.BUCKET_STORAGE_CLASS_IA. 
# headers = {'x-oss-storage-class': oss2.BUCKET_STORAGE_CLASS_IA}

# Konversi kelas penyimpanan objek. 
bucket.copy_object(bucket.bucket_name, object_name, object_name, headers)

Konversi kelas penyimpanan objek dari Penyimpanan Arsip Dingin ke Standar atau IA

Berikut adalah contoh kode yang menunjukkan cara mengonversi kelas penyimpanan objek dari Penyimpanan Arsip Dingin ke Standar atau IA:

# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
import os
import time
from oss2.models import RESTORE_TIER_EXPEDITED, RestoreJobParameters

# Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode sampel, pastikan bahwa 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. Contoh: cn-hangzhou. Parameter ini diperlukan jika Anda menggunakan algoritma tanda tangan V4.
region = "cn-hangzhou"

# Tentukan nama bucket Anda.
bucket = oss2.Bucket(auth, endpoint, "yourBucketName", region=region)

# Tentukan jalur lengkap objek. Jangan sertakan nama bucket dalam jalur lengkap. Contoh: exampledir/exampleobject.txt. 
# Pastikan bahwa kelas penyimpanan objek adalah Penyimpanan Arsip Dingin. 
object_name = 'exampledir/exampleobject.txt'

# Dapatkan metadata objek. 
meta = bucket.head_object(object_name)

# Pulihkan objek. 
if meta.resp.headers['x-oss-storage-class'] == oss2.BUCKET_STORAGE_CLASS_COLD_ARCHIVE:
    # Tentukan prioritas pemulihan. RESTORE_TIER_EXPEDITED menentukan bahwa objek dipulihkan dalam waktu 1 jam. 
    job_parameters = RestoreJobParameters(RESTORE_TIER_EXPEDITED)
    # Tentukan durasi selama objek dapat tetap dalam keadaan dipulihkan. Unit: hari.     
    restore_config = oss2.models.RestoreConfiguration(days=5, job_parameters=job_parameters)
    bucket.restore_object(object_name, input=restore_config)
    while True:
        meta = bucket.head_object(object_name)
        if meta.resp.headers['x-oss-restore'] == 'ongoing-request="true"':
            time.sleep(5)
        else:
            break
# Konversi kelas penyimpanan objek menjadi Standar dengan menetapkan header x-oss-storage-class ke oss2.BUCKET_STORAGE_CLASS_STANDARD. 
headers = {'x-oss-storage-class': oss2.BUCKET_STORAGE_CLASS_STANDARD}
# Konversi kelas penyimpanan objek menjadi IA dengan menetapkan header x-oss-storage-class ke oss2.BUCKET_STORAGE_CLASS_IA. 
# headers = {'x-oss-storage-class': oss2.BUCKET_STORAGE_CLASS_IA}

# Konversi kelas penyimpanan objek. 
bucket.copy_object(bucket.bucket_name, object_name, object_name, headers)

Referensi

Untuk informasi lebih lanjut tentang operasi API yang dapat Anda panggil untuk mengonversi kelas penyimpanan objek, lihat CopyObject.