全部产品
Search
文档中心

Object Storage Service:Ubah kelas penyimpanan objek menggunakan OSS SDK untuk Python 2.0

更新时间:Oct 21, 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. Di OSS, setelah sebuah objek dibuat, kontennya tidak dapat diubah. Untuk mengubah kelas penyimpanan suatu objek, Anda harus membuat objek baru dan menetapkan kelas penyimpanannya. Topik ini menjelaskan cara menggunakan OSS SDK untuk Python 2.0 dalam melakukan konversi kelas penyimpanan.

Catatan penggunaan

  • Kode contoh dalam topik ini menggunakan ID wilayah cn-hangzhou dari Wilayah Hangzhou, Tiongkok. Secara default, titik akhir publik digunakan untuk mengakses sumber daya dalam bucket. Jika Anda ingin mengakses sumber daya dalam bucket dari layanan Alibaba Cloud lainnya di wilayah yang sama dengan lokasi bucket tersebut, gunakan titik akhir internal. Untuk informasi lebih lanjut tentang wilayah dan titik akhir yang didukung oleh OSS, lihat Wilayah dan titik akhir.

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

Kode contoh

Gunakan metode CopyObject untuk mengubah kelas penyimpanan

Anda dapat menggunakan metode CopyObject untuk mengubah kelas penyimpanan objek dari Standar menjadi Arsip.

import argparse
import alibabacloud_oss_v2 as oss

# Buat parser argumen baris perintah.
parser = argparse.ArgumentParser(description="contoh salinan objek")

# Tambahkan argumen baris perintah --region, yang menentukan wilayah tempat bucket berada. Argumen ini wajib.
parser.add_argument('--region', help='Wilayah tempat bucket berada.', required=True)
# Tambahkan argumen baris perintah --bucket, yang menentukan nama bucket tujuan. Argumen ini wajib.
parser.add_argument('--bucket', help='Nama bucket tujuan.', required=True)
# Tambahkan argumen baris perintah --endpoint, yang menentukan nama domain yang dapat digunakan layanan lain untuk mengakses OSS. Argumen ini opsional.
parser.add_argument('--endpoint', help='Nama domain yang dapat digunakan layanan lain untuk mengakses OSS')
# Tambahkan argumen baris perintah --key, yang menentukan nama objek tujuan. Argumen ini wajib.
parser.add_argument('--key', help='Nama objek tujuan.', required=True)
# Tambahkan argumen baris perintah --source_key, yang menentukan nama objek sumber. Argumen ini wajib.
parser.add_argument('--source_key', help='Nama objek sumber.', required=True)
# Tambahkan argumen baris perintah --source_bucket, yang menentukan nama bucket sumber. Argumen ini wajib.
parser.add_argument('--source_bucket', help='Nama bucket sumber.', required=True)

def main():
    # Parsing argumen baris perintah.
    args = parser.parse_args()

    # Muat kredensial dari variabel lingkungan untuk verifikasi identitas.
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # Muat konfigurasi default dari SDK dan atur penyedia kredensial.
    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider

    # Atur wilayah dalam konfigurasi.
    cfg.region = args.region

    # Jika parameter endpoint diberikan, atur endpoint dalam konfigurasi.
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint

    # Buat klien OSS berdasarkan konfigurasi.
    client = oss.Client(cfg)

    # Jalankan permintaan untuk menyalin objek.
    result = client.copy_object(oss.CopyObjectRequest(
        bucket=args.bucket,  # Tentukan nama bucket tujuan.
        key=args.key,  # Tentukan kunci objek tujuan.
        source_key=args.source_key,  # Tentukan kunci objek sumber.
        source_bucket=args.source_bucket,  # Tentukan nama bucket sumber.
        storage_class= "Archive", # Ubah kelas penyimpanan menjadi Penyimpanan Arsip.
    ))

    # Cetak hasil operasi penyalinan.
    print(f'kode status: {result.status_code},'
          f' ID permintaan: {result.request_id},'
          f' ID versi: {result.version_id},'
          f' hash crc64: {result.hash_crc64},'
          f' ID versi sumber: {result.source_version_id},'
          f' enkripsi sisi server: {result.server_side_encryption},'
          f' enkripsi data sisi server: {result.server_side_data_encryption},'
          f' terakhir dimodifikasi: {result.last_modified},'
          f' etag: {result.etag},'
    )

# Panggil fungsi utama saat skrip dijalankan langsung.
if __name__ == "__main__":
    main()  # Titik masuk skrip. Fungsi utama dipanggil ketika file dijalankan langsung.

Gunakan Copier untuk mengubah kelas penyimpanan objek

Anda dapat menggunakan metode Copier.Copy dalam OSS SDK untuk Python 2.0 untuk mengubah kelas penyimpanan. Metode ini menggabungkan operasi salinan sederhana dan salinan multipart serta secara cerdas memilih opsi yang paling sesuai berdasarkan parameter permintaan yang diberikan.

Berikut adalah kode contoh untuk menggunakan metode Copier.Copy dalam mengubah kelas penyimpanan objek dari Standar menjadi Arsip.

import argparse
import alibabacloud_oss_v2 as oss

# Buat parser argumen baris perintah.
parser = argparse.ArgumentParser(description="contoh copier")

# Tambahkan argumen baris perintah --region (wajib) untuk menentukan wilayah tempat bucket berada.
parser.add_argument('--region', help='Wilayah tempat bucket berada.', required=True)

# Tambahkan argumen baris perintah --bucket (wajib) untuk menentukan nama bucket tujuan.
parser.add_argument('--bucket', help='Nama bucket tujuan.', required=True)

# Tambahkan argumen baris perintah --endpoint (opsional) untuk menentukan titik akhir OSS.
parser.add_argument('--endpoint', help='Nama domain yang dapat digunakan layanan lain untuk mengakses OSS')

# Tambahkan argumen baris perintah --key (wajib) untuk menentukan nama objek tujuan.
parser.add_argument('--key', help='Nama objek tujuan.', required=True)

# Tambahkan argumen baris perintah --source_key (wajib) untuk menentukan nama objek sumber.
parser.add_argument('--source_key', help='Nama objek sumber.', required=True)

# Tambahkan argumen baris perintah --source_bucket (wajib) untuk menentukan nama bucket sumber.
parser.add_argument('--source_bucket', help='Nama bucket sumber.', required=True)


def main():
    # Parsing argumen baris perintah.
    args = parser.parse_args()

    # Muat kredensial dari variabel lingkungan.
    # Gunakan EnvironmentVariableCredentialsProvider untuk membaca ID AccessKey dan Rahasia AccessKey dari variabel lingkungan.
    credentials_provider = oss.credentials.EnvironmentVariableCredentialsProvider()

    # Gunakan konfigurasi default dari SDK.
    cfg = oss.config.load_default()
    cfg.credentials_provider = credentials_provider  # Atur penyedia kredensial.
    cfg.region = args.region  # Atur wilayah tempat bucket berada.
    if args.endpoint is not None:
        cfg.endpoint = args.endpoint  # Jika titik akhir diberikan, atur titik akhir kustom.

    # Buat klien OSS.
    client = oss.Client(cfg)

    # Buat instance Copier dan lakukan operasi penyalinan.
    copier = client.copier()

    # Lakukan operasi penyalinan.
    result = copier.copy(
        oss.CopyObjectRequest(
            bucket=args.bucket,          # Nama bucket tujuan.
            key=args.key,                # Nama objek tujuan.
            source_bucket=args.source_bucket,  # Nama bucket sumber.
            source_key=args.source_key,  # Nama objek sumber.
            storage_class="Archive", # Ubah kelas penyimpanan menjadi Penyimpanan Arsip.
        )
    )

    # Cetak hasil penyalinan.
    # Gunakan vars(result) untuk mengonversi objek hasil menjadi kamus dan cetak kamus tersebut.
    print(vars(result))


if __name__ == "__main__":
    main()