すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:Data replication (Python SDK V1)

最終更新日:Nov 29, 2025

データレプリケーションは、オブジェクトをソースバケットからターゲットバケットに非同期にコピーします。また、オブジェクトの作成、更新、削除などの操作をほぼリアルタイムでレプリケーションします。Object Storage Service (OSS) は、クロスリージョンレプリケーション (CRR) と同一リージョンレプリケーション (SRR) をサポートしています。

注意事項

  • このトピックでは、中国 (杭州) リージョンのパブリックエンドポイントを使用します。OSS と同じリージョンにある他の Alibaba Cloud サービスから OSS にアクセスする場合は、内部エンドポイントを使用します。OSS のリージョンとエンドポイントの詳細については、「リージョンとエンドポイント」をご参照ください。

  • このトピックでは、アクセス認証情報は環境変数から取得します。アクセス認証情報の設定方法の詳細については、「OSS SDK for Python 1.0 を使用したアクセス認証情報の設定」をご参照ください。

  • このトピックでは、OSS エンドポイントを使用して OSSClient インスタンスを作成します。カスタムドメイン名または Security Token Service (STS) を使用して OSSClient インスタンスを作成する場合は、「初期化」をご参照ください。

  • データレプリケーションを有効にするには、oss:PutBucketReplication 権限が必要です。データレプリケーションルールを表示するには、oss:GetBucketReplication 権限が必要です。レプリケーション可能なターゲットリージョンを表示するには、oss:GetBucketReplicationLocation 権限が必要です。データレプリケーションの進捗状況を表示するには、oss:GetBucketReplicationProgress 権限が必要です。データレプリケーションを無効にするには、oss:DeleteBucketReplication 権限が必要です。詳細については、「RAM ユーザーへのカスタムアクセスポリシーの付与」をご参照ください。

データレプリケーションの有効化

重要

データレプリケーションを有効にする前に、ソースバケットとターゲットバケットの両方がバージョン管理されていないか、バージョン管理が有効になっていることを確認してください。

次のコードは、データレプリケーションを有効にする方法を示しています。中国 (杭州) リージョンの srcexamplebucket から、同一または異なるリージョンの destexamplebucket にデータをレプリケーションします。

# -*- coding: utf-8 -*-
import oss2
from oss2.credentials import EnvironmentVariableCredentialsProvider
from oss2.models import ReplicationRule
# 環境変数からアクセス認証情報を取得します。このサンプルコードを実行する前に、環境変数 OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET が設定されていることを確認してください。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# エンドポイントに対応するリージョン情報 (cn-hangzhou など) を指定します。このパラメーターは V4 署名に必要です。
region = "cn-hangzhou"

# バケット名 (examplebucket など) を指定します。
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)

replica_config = ReplicationRule(
    # データのレプリケーション先となるターゲットバケットを指定します。
    target_bucket_name='destexamplebucket',
    # ターゲットバケットが配置されているリージョンを指定します。
    # クロスリージョンレプリケーションを有効にする場合、ソースバケットとターゲットバケットは異なるリージョンに配置する必要があります。同一リージョンレプリケーションを有効にする場合、ソースバケットとターゲットバケットは同じリージョンに配置する必要があります。
    target_bucket_location='yourTargetBucketLocation'
)

# レプリケーションするオブジェクトのプレフィックスを指定します。プレフィックスを指定すると、プレフィックスに一致するオブジェクトのみがターゲットバケットにレプリケーションされます。
# prefix_list = ['prefix1', 'prefix2']
# データレプリケーションルールを設定します。
# replica_config = ReplicationRule(
     # prefix_list=prefix_list,
     # ソースバケットでのオブジェクトの作成および更新操作をターゲットバケットにレプリケーションします。
     # action_list=[ReplicationRule.PUT],
     # データのレプリケーション先となるターゲットバケットを指定します。
     # target_bucket_name='destexamplebucket1',
     # ターゲットバケットが配置されているリージョンを指定します。
     # target_bucket_location='yourTargetBucketLocation',
     # デフォルトでは、既存データがレプリケーションされます。この例では、このパラメーターを False に設定して、既存データのレプリケーションを無効にします。
     # is_enable_historical_object_replication=False,
     # データレプリケーション用のデータ転送リンクを指定します。
     # target_transfer_type='oss_acc',
     # データレプリケーションのために OSS に認可されたロールを指定します。この要素は、SSE-KMS を使用してターゲットオブジェクトを暗号化する場合に必要です。
     # sync_role_name='roleNameTest',
     # SSE-KMS 暗号化で作成されたオブジェクトをレプリケーションします。
     # sse_kms_encrypted_objects_status=ReplicationRule.ENABLED
     # SSE-KMS キー ID を指定します。この要素は、SSE-KMS 暗号化で作成されたオブジェクトをレプリケーションする場合に必要です。
     # replica_kms_keyid='9468da86-3509-4f8d-a61e-6eab1eac****',
  #)

# データレプリケーションを有効にします。
bucket.put_bucket_replication(replica_config)

データレプリケーションルールの表示

次のコードは、examplebucket のデータレプリケーションルールを表示する方法を示しています。

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

# 環境変数からアクセス認証情報を取得します。このサンプルコードを実行する前に、環境変数 OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET が設定されていることを確認してください。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# エンドポイントに対応するリージョン情報 (cn-hangzhou など) を指定します。このパラメーターは V4 署名に必要です。
region = "cn-hangzhou"

# バケット名 (examplebucket など) を指定します。
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)

# データレプリケーションルールを表示します。
result = bucket.get_bucket_replication()
# 返された情報を出力します。
for rule in result.rule_list:
    print(rule.rule_id)
    print(rule.target_bucket_name)
    print(rule.target_bucket_location)

レプリケーション可能なターゲットリージョンの表示

次のコードは、examplebucket 内のデータをレプリケーションできるターゲットリージョンのリストを表示する方法を示しています。

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

# 環境変数からアクセス認証情報を取得します。このサンプルコードを実行する前に、環境変数 OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET が設定されていることを確認してください。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# エンドポイントに対応するリージョン情報 (cn-hangzhou など) を指定します。このパラメーターは V4 署名に必要です。
region = "cn-hangzhou"

# バケット名 (examplebucket など) を指定します。
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)

# レプリケーション可能なターゲットリージョンを表示します。
result = bucket.get_bucket_replication_location()
for location in result.location_list:
    print(location)

データレプリケーションの進捗状況の表示

データレプリケーションの進捗状況は、既存データのレプリケーションの進捗状況と増分データのレプリケーションの進捗状況に分かれています。

  • 既存データのレプリケーションの進捗状況はパーセンテージで表されます。これは、既存データのレプリケーションが有効になっているバケットにのみ適用されます。

  • 増分データのレプリケーションの進捗状況は、特定の時点によって示されます。これは、この時点より前に書き込まれたデータがレプリケーションされたことを意味します。

次のコードは、examplebucket の ID `test_replication_1` を持つルールのデータレプリケーションの進捗状況を表示する方法を示しています。

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

# 環境変数からアクセス認証情報を取得します。このサンプルコードを実行する前に、環境変数 OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET が設定されていることを確認してください。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# エンドポイントに対応するリージョン情報 (cn-hangzhou など) を指定します。このパラメーターは V4 署名に必要です。
region = "cn-hangzhou"

# バケット名 (examplebucket など) を指定します。
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)

# データレプリケーションの進捗状況を表示します。
# レプリケーションルール ID (test_replication_1 など) を指定します。
result = bucket.get_bucket_replication_progress('test_replication_1')
print(result.progress.rule_id)
# 既存データのレプリケーションが有効になっているかどうかを確認します。
print(result.progress.is_enable_historical_object_replication)
# 既存データのレプリケーションの進捗状況。
print(result.progress.historical_object_progress)
# リアルタイムデータのレプリケーションの進捗状況。
print(result.progress.new_object_progress)            

データレプリケーションの無効化

バケットのレプリケーションルールを削除することで、ソースバケットとターゲットバケット間のデータレプリケーション関係を無効にできます。

次のコードは、examplebucket から ID `test_replication_1` を持つレプリケーションルールを削除する方法を示しています。

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

# 環境変数からアクセス認証情報を取得します。このサンプルコードを実行する前に、環境変数 OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET が設定されていることを確認してください。
auth = oss2.ProviderAuthV4(EnvironmentVariableCredentialsProvider())

# バケットが配置されているリージョンのエンドポイントを指定します。たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
endpoint = "https://oss-cn-hangzhou.aliyuncs.com"
# エンドポイントに対応するリージョン情報 (cn-hangzhou など) を指定します。このパラメーターは V4 署名に必要です。
region = "cn-hangzhou"

# バケット名 (examplebucket など) を指定します。
bucket = oss2.Bucket(auth, endpoint, "examplebucket", region=region)

# データレプリケーションを無効にします。データレプリケーションが無効になった後も、ターゲットバケットにレプリケーションされたオブジェクトは残ります。ただし、ソースバケット内のオブジェクトに対するその後の変更は、ターゲットバケットにレプリケーションされなくなります。
# レプリケーションルール ID (test_replication_1 など) を指定します。
result = bucket.delete_bucket_replication('test_replication_1')

関連ドキュメント

  • データレプリケーションの完全なサンプルコードについては、「GitHub」をご参照ください。

  • データレプリケーションを有効にする API 操作の詳細については、「PutBucketReplication」をご参照ください。

  • データレプリケーションルールを表示する API 操作の詳細については、「GetBucketReplication」をご参照ください。

  • レプリケーション可能なターゲットリージョンを表示する API 操作の詳細については、「GetBucketReplicationLocation」をご参照ください。

  • データレプリケーションの進捗状況を表示する API 操作の詳細については、「GetBucketReplicationProgress」をご参照ください。

  • データレプリケーションを無効にする API 操作の詳細については、「DeleteBucketReplication」をご参照ください。