全部产品
Search
文档中心

Object Storage Service:Replikasi data (Python SDK V1)

更新时间:Nov 29, 2025

Replikasi data menyalin objek secara asinkron dari bucket sumber ke bucket tujuan, termasuk operasi pembuatan, pembaruan, dan penghapusan objek dalam waktu nyaris real-time. Object Storage Service (OSS) mendukung replikasi lintas wilayah (cross-region replication/CRR) dan replikasi dalam wilayah yang sama (same-region replication/SRR).

Catatan penggunaan

  • Topik ini menggunakan 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.

  • Topik ini memperoleh kredensial akses dari variabel lingkungan. Untuk informasi selengkapnya tentang cara mengonfigurasi kredensial akses, lihat Konfigurasikan kredensial akses menggunakan OSS SDK untuk Python 1.0.

  • Topik ini membuat instans OSSClient menggunakan titik akhir OSS. Jika Anda ingin membuat instans OSSClient menggunakan nama domain kustom atau Security Token Service (STS), lihat Inisialisasi.

  • Untuk mengaktifkan replikasi data, Anda harus memiliki izin oss:PutBucketReplication. Untuk melihat aturan replikasi data, Anda harus memiliki izin oss:GetBucketReplication. Untuk melihat wilayah tujuan yang dapat direplikasi, Anda harus memiliki izin oss:GetBucketReplicationLocation. Untuk melihat progres replikasi data, Anda harus memiliki izin oss:GetBucketReplicationProgress. Untuk menonaktifkan replikasi data, Anda harus memiliki izin oss:DeleteBucketReplication. Untuk informasi selengkapnya, lihat Berikan kebijakan akses kustom kepada RAM user.

Aktifkan replikasi data

Penting

Sebelum mengaktifkan replikasi data, pastikan bucket sumber dan bucket tujuan sama-sama tidak menggunakan pengendalian versi atau keduanya telah mengaktifkan pengendalian versi.

Kode berikut menunjukkan cara mengaktifkan replikasi data dari srcexamplebucket di wilayah China (Hangzhou) ke destexamplebucket di wilayah yang sama atau wilayah berbeda.

# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
from oss2.models import ReplicationRule
# Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# Tentukan titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), setel titik akhir ke https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Tentukan informasi wilayah yang sesuai dengan titik akhir, misalnya cn-hangzhou. Perhatikan bahwa parameter ini wajib untuk tanda tangan V4.
region = "cn-hangzhou"

# Tentukan nama bucket, misalnya examplebucket.
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)

replica_config = ReplicationRule(
    # Tentukan bucket tujuan tempat data akan direplikasi.
    target_bucket_name='destexamplebucket',
    # Tentukan wilayah tempat bucket tujuan berada.
    # Jika Anda ingin mengaktifkan replikasi cross-region, bucket sumber dan tujuan harus berada di wilayah berbeda. Jika Anda ingin mengaktifkan replikasi same-region, bucket sumber dan tujuan harus berada di wilayah yang sama.
    target_bucket_location='yourTargetBucketLocation'
)

# Tentukan awalan objek yang akan direplikasi. Setelah Anda menentukan awalan, hanya objek yang sesuai dengan awalan tersebut yang akan direplikasi ke bucket tujuan.
# prefix_list = ['prefix1', 'prefix2']
# Tetapkan aturan replikasi data.
# replica_config = ReplicationRule(
     # prefix_list=prefix_list,
     # Replikasikan operasi pembuatan dan pembaruan objek di bucket sumber ke bucket tujuan.
     # action_list=[ReplicationRule.PUT],
     # Tentukan bucket tujuan tempat data akan direplikasi.
     # target_bucket_name='destexamplebucket1',
     # Tentukan wilayah tempat bucket tujuan berada.
     # target_bucket_location='yourTargetBucketLocation',
     # Secara default, data historis direplikasi. Pada contoh ini, parameter ini diatur ke False untuk menonaktifkan replikasi data historis.
     # is_enable_historical_object_replication=False,
     # Tentukan tautan transmisi data untuk replikasi data.
     # target_transfer_type='oss_acc',
     # Tentukan role yang diberi otorisasi kepada OSS untuk replikasi data. Elemen ini wajib jika Anda menggunakan enkripsi SSE-KMS untuk objek tujuan.
     # sync_role_name='roleNameTest',
     # Replikasikan objek yang dibuat dengan enkripsi SSE-KMS.
     # sse_kms_encrypted_objects_status=ReplicationRule.ENABLED
     # Tentukan ID kunci SSE-KMS. Elemen ini wajib jika Anda mereplikasi objek yang dibuat dengan enkripsi SSE-KMS.
     # replica_kms_keyid='9468da86-3509-4f8d-a61e-6eab1eac****',
  #)

# Aktifkan replikasi data.
bucket.put_bucket_replication(replica_config)

Lihat aturan replikasi data

Kode berikut menunjukkan cara melihat aturan replikasi data untuk examplebucket.

# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
from oss2.models import ReplicationRule

# Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# Tentukan titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), setel titik akhir ke https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Tentukan informasi wilayah yang sesuai dengan titik akhir, misalnya cn-hangzhou. Perhatikan bahwa parameter ini wajib untuk tanda tangan V4.
region = "cn-hangzhou"

# Tentukan nama bucket, misalnya examplebucket.
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)

# Lihat aturan replikasi data.
result = bucket.get_bucket_replication()
# Cetak informasi yang dikembalikan.
for rule in result.rule_list:
    print(rule.rule_id)
    print(rule.target_bucket_name)
    print(rule.target_bucket_location)

Lihat wilayah tujuan yang tersedia untuk replikasi

Kode berikut menunjukkan cara melihat daftar wilayah tujuan tempat data di examplebucket dapat direplikasi.

# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
from oss2.models import ReplicationRule

# Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# Tentukan titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), setel titik akhir ke https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Tentukan informasi wilayah yang sesuai dengan titik akhir, misalnya cn-hangzhou. Perhatikan bahwa parameter ini wajib untuk tanda tangan V4.
region = "cn-hangzhou"

# Tentukan nama bucket, misalnya examplebucket.
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)

# Lihat wilayah tujuan yang tersedia untuk replikasi.
result = bucket.get_bucket_replication_location()
for location in result.location_list:
    print(location)

Lihat progres replikasi data

Progres replikasi data terdiri atas progres replikasi data historis dan progres replikasi data inkremental.

  • Progres replikasi data historis dinyatakan dalam persentase dan hanya berlaku untuk bucket yang telah mengaktifkan replikasi data historis.

  • Progres replikasi data inkremental ditunjukkan oleh titik waktu tertentu, yang berarti data yang ditulis sebelum titik waktu tersebut telah direplikasi.

Kode berikut menunjukkan cara melihat progres replikasi data untuk aturan dengan ID `test_replication_1` pada examplebucket.

# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
from oss2.models import ReplicationRule

# Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# Tentukan titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), setel titik akhir ke https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Tentukan informasi wilayah yang sesuai dengan titik akhir, misalnya cn-hangzhou. Perhatikan bahwa parameter ini wajib untuk tanda tangan V4.
region = "cn-hangzhou"

# Tentukan nama bucket, misalnya examplebucket.
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)

# Lihat progres replikasi data.
# Tentukan ID aturan replikasi, misalnya test_replication_1.
result = bucket.get_bucket_replication_progress('test_replication_1')
print(result.progress.rule_id)
# Periksa apakah replikasi data historis diaktifkan.
print(result.progress.is_enable_historical_object_replication)
# Progres replikasi data historis.
print(result.progress.historical_object_progress)
# Progres replikasi data real-time.
print(result.progress.new_object_progress)            

Nonaktifkan replikasi data

Anda dapat menonaktifkan hubungan replikasi data antara bucket sumber dan bucket tujuan dengan menghapus aturan replikasi untuk bucket tersebut.

Kode berikut menunjukkan cara menghapus aturan replikasi dengan ID `test_replication_1` dari examplebucket.

# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
from oss2.models import ReplicationRule

# Dapatkan kredensial akses dari variabel lingkungan. Sebelum menjalankan kode contoh ini, pastikan variabel lingkungan OSS_ACCESS_KEY_ID dan OSS_ACCESS_KEY_SECRET telah disetel.
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# Tentukan titik akhir wilayah tempat bucket berada. Misalnya, jika bucket berada di wilayah China (Hangzhou), setel titik akhir ke https://oss-cn-hangzhou.aliyuncs.com.
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# Tentukan informasi wilayah yang sesuai dengan titik akhir, misalnya cn-hangzhou. Perhatikan bahwa parameter ini wajib untuk tanda tangan V4.
region = "cn-hangzhou"

# Tentukan nama bucket, misalnya examplebucket.
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)

# Nonaktifkan replikasi data. Setelah replikasi data dinonaktifkan, objek yang telah direplikasi ke bucket tujuan tetap ada. Namun, perubahan selanjutnya pada objek di bucket sumber tidak lagi direplikasi ke bucket tujuan.
# Tentukan ID aturan replikasi, misalnya test_replication_1.
result = bucket.delete_bucket_replication('test_replication_1')

Referensi

  • Untuk kode contoh lengkap mengenai replikasi data, lihat GitHub.

  • Untuk informasi selengkapnya mengenai operasi API untuk mengaktifkan replikasi data, lihat PutBucketReplication.

  • Untuk informasi selengkapnya mengenai operasi API untuk melihat aturan replikasi data, lihat GetBucketReplication.

  • Untuk informasi selengkapnya mengenai operasi API untuk melihat wilayah tujuan yang tersedia untuk replikasi, lihat GetBucketReplicationLocation.

  • Untuk informasi selengkapnya mengenai operasi API untuk melihat progres replikasi data, lihat GetBucketReplicationProgress.

  • Untuk informasi selengkapnya mengenai operasi API untuk menonaktifkan replikasi data, lihat DeleteBucketReplication.