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

Object Storage Service:データレプリケーション

最終更新日:Feb 26, 2024

データレプリケーションは、オブジェクトとオブジェクト操作 (作成、上書き、削除など) をソースバケットから宛先バケットに自動的にレプリケートします。 Object Storage Service (OSS) は、クロスリージョンレプリケーション (CRR) と同一リージョンレプリケーション (SRR) をサポートしています。

使用上の注意

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

  • このトピックでは、アクセス資格情報は環境変数から取得します。 アクセス資格情報の設定方法の詳細については、「アクセス資格情報の設定」をご参照ください。

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

  • データレプリケーションを有効にするには、oss:PutBucketReplication権限が必要です。 データレプリケーション規則を照会するには、oss:GetBucketReplication権限が必要です。 データをレプリケートできるリージョンを照会するには、oss:GetBucketReplicationLocation権限が必要です。 データレプリケーションタスクの進行状況を照会するには、oss:GetBucketReplicationProgress権限が必要です。 データレプリケーションを無効にするには、oss:DeleteBucketReplication権限が必要です。 詳細については、「RAMユーザーへのカスタムポリシーのアタッチ」をご参照ください。

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

重要

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

次のサンプルコードは、データレプリケーションを有効にして、中国 (杭州) リージョンのsrcexamplebucketから中国 (北京) リージョンのdestexamplebucketにデータをレプリケートする方法の例を示しています。

# -*-コーディング: utf-8 -*-
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
oss2.modelsからReplicationRuleをインポート
# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# ソースバケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 
# データをレプリケートするソースバケットの名前を指定します。 例: srcexamplebucket. 
bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'srcexamplebucket')
replica_config = ReplicationRule ()
    # データを複製する宛先バケットを指定します。 
    target_bucket_name='destexamplebucket' 、
    # 宛先バケットが配置されているリージョンを指定します。 
    # CRRを有効にする場合は、ソースバケットと宛先バケットを異なるリージョンに配置する必要があります。 SRRを有効にする場合は、ソースバケットと宛先バケットが同じリージョンにある必要があります。 
    target_bucket_location='yourTargetBucketLocation'
)

# レプリケートするオブジェクトの名前に含まれるプレフィックスを指定します。 プレフィックスを指定すると、名前にプレフィックスが含まれているオブジェクトのみが宛先バケットにレプリケートされます。 
# prefix_list = ['prefix1', 'prefix2']
# データ複製ルールを設定します。 
# replica_config = ReplicationRule (
     # prefix_list=prefix_list,
     # 宛先バケットにレプリケートできる操作を指定します。 デフォルト値はALLです。これは、ソースバケット内のオブジェクトに対して実行されるすべての操作が、ターゲットバケットに同期されることを示します。 
     # action_list=[ReplicationRule.ALL] 、
     # データを複製する宛先バケットを指定します。 
     # target_bucket_name='destexamplebucket1' 、
     # 宛先バケットが配置されているリージョンを指定します。 
     # target_bucket_location='yourTargetBucketLocation' 、
     # 履歴データを複製するかどうかを指定します。 デフォルトでは、履歴データはレプリケートされます。 この例では、履歴データは複製されない。 
     # 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暗号化で使用するCMK IDを指定します。 SSE-KMSを使用して、宛先バケットにレプリケートされるオブジェクトを暗号化する場合は、このパラメーターを設定する必要があります。 
     # replica_kms_keyid='9468da86-3509-4f8d-a61e-6eab1eac **** '、
  #)

# データ複製を有効にします。 
bucket.put_bucket_replication(replica_config) 

データ複製ルールの照会

次のサンプルコードは、examplebucketという名前のバケットのデータレプリケーションルールを照会する方法の例を示しています。

# -*-コーディング: utf-8 -*-
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
oss2.modelsからReplicationRuleをインポート

# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 
# バケットの名前を指定します。 例: examplebucket. 
bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'examplebucket')

# データ複製ルールを照会します。 
result = bucket.get_bucket_replication()
# 返された情報を表示します。 
result.ru le_listのルールの場合:
    プリント (rule.ru le_id)
    print(rule.tar get_bucket_name)
    print(rule.tar get_bucket_location) 

データをレプリケートできるリージョンの照会

次のサンプルコードは、examplebucketバケットからデータをレプリケートできるリージョンをクエリする方法の例を示しています。

# -*-コーディング: utf-8 -*-
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
oss2.modelsからReplicationRuleをインポート

# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 
# バケットの名前を指定します。 例: examplebucket. 
bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'examplebucket')

データをレプリケートできるリージョンを照会します。 
result = bucket.get_bucket_replication_location()
result.location_list内の場所の場合:
    プリント (場所) 

データ複製タスクの進行状況の照会

履歴データ複製タスクと増分データ複製タスクの進行状況を照会できます。

  • 履歴データ複製タスクの進行状況は、パーセンテージで表されます。 履歴データレプリケーションが有効になっているバケットに対してのみ、履歴データレプリケーションタスクの進行状況を照会できます。

  • 増分データレプリケーションタスクの進行状況は、時点として表されます。 時点より前にソースバケットに格納されているデータがレプリケートされます。

次のサンプルコードは、レプリケーションルールIDがtest_replication_1であるデータレプリケーションタスクの進行状況を照会する方法の例を示しています。

# -*-コーディング: utf-8 -*-
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
oss2.modelsからReplicationRuleをインポート

# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 
# バケットの名前を指定します。 例: examplebucket. 
bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'examplebucket')

# データ複製タスクの進行状況を照会します。 
# データレプリケーションルールのIDを指定します。 例: test_replication_1。 
result = bucket.get_bucket_replication_progress('test_replication_1 ')
プリント (result.progress.ru le_id)
# 履歴データのレプリケーションが有効かどうかを確認します。 
print(result.progress.is_enable_historical_object_replication)
# 履歴データのレプリケーションの進行状況を表示します。 
プリント (result.progress.historical_object_progress)
# 増分データレプリケーションの進行状況を表示します。 
印刷 (result.progress.new_object_progress) 

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

指定したソースバケットに設定されているレプリケーションルールを削除して、バケットのデータレプリケーションを無効にすることができます。

次のサンプルコードは、examplebucketバケットのtest_replication_1ルールを削除する方法の例を示しています。

# -*-コーディング: utf-8 -*-
oss2のインポート
oss2.credentialsからEnvironmentVariableCredentialsProviderをインポート
oss2.modelsからReplicationRuleをインポート

# 環境変数からアクセス資格情報を取得します。 サンプルコードを実行する前に、OSS_ACCESS_KEY_IDおよびOSS_ACCESS_KEY_SECRET環境変数が設定されていることを確認してください。 
auth = oss2.ProviderAuth(EnvironmentVariableCredentialsProvider())
# バケットが配置されているリージョンのエンドポイントを指定します。 たとえば、バケットが中国 (杭州) リージョンにある場合、エンドポイントをhttps://oss-cn-hangzhou.aliyuncs.comに設定します。 
# バケットの名前を指定します。 例: examplebucket. 
bucket = oss2.Bucket(auth, 'https:// oss-cn-hangzhou.aliyuncs.com ', 'examplebucket')

# データ複製を無効にします。 データレプリケーションを無効にした後も、宛先バケットにレプリケートされたオブジェクトは引き続き存在します。 ただし、ソースバケット内のオブジェクトに対するすべての変更は、宛先バケットにレプリケートされなくなります。 
# データレプリケーションルールのIDを指定します。 例: test_replication_1。 
result = bucket.de lete_bucket_replication('test_replication_1 ') 

参考資料

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

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

  • データレプリケーション規則を照会するために呼び出すAPI操作の詳細については、「GetBucketReplication」をご参照ください。

  • データをレプリケートできるリージョンをクエリするために呼び出すAPI操作の詳細については、「GetBucketReplicationLocation」をご参照ください。

  • データレプリケーションタスクの進行状況を照会するために呼び出すことができるAPI操作の詳細については、「GetBucketReplicationProgress」をご参照ください。

  • データレプリケーションを無効にするために呼び出すことができるAPI操作の詳細については、「DeleteBucketReplication」をご参照ください。