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

Object Storage Service:同一アカウント同一リージョンレプリケーション

最終更新日:Jul 16, 2026

同一アカウント同一リージョンレプリケーションは、同一アカウントの同一リージョンにあるソースバケット内のオブジェクトの作成、更新、削除などの操作を、同じアカウントの同じリージョンにあるデスティネーションバケットに自動的かつ非同期 (ほぼリアルタイム) でレプリケートします。このトピックでは、同一アカウント同一リージョンレプリケーションの設定方法について説明します。

前提条件

  • ソースバケット (バケット A) として、あるアカウントのあるリージョンにバケットを作成し、そのアカウントの UID、バケット A の名前、リージョンを記録しておきます。

  • デスティネーションバケット (バケット B) として、同一アカウントおよび同一リージョンにバケットを作成し、バケット B の名前を記録しておきます。

ロールの種類

同一アカウント同一リージョンレプリケーションを実行する際、ソースバケットとデスティネーションバケット間のレプリケーション操作に使用するロールを指定する必要があります。同一アカウント同一リージョンレプリケーションタスクを完了するには、以下のいずれかのロールを選択できます。

重要

RAM ユーザーを使用してロールを作成できます。RAM ユーザーには、ram:CreateRoleram:GetRoleram:ListPoliciesForRoleram:AttachPolicyToRole の権限が必要です。ram:CreateRoleram:GetRole のようなロール関連の権限を RAM ユーザーに付与することは比較的リスクが高いため、RAM ユーザーに関連付けられた Alibaba Cloud アカウントを使用して、RAM ロールを作成し、ロールへの権限付与を完了することを推奨します。権限付与が完了すると、RAM ユーザーは Alibaba Cloud アカウントが作成した RAM ロールを直接再利用できます。

(推奨) ロールの作成

同一アカウント同一リージョンレプリケーションルールを作成する際、ロールを作成してレプリケーションタスクを完了することを選択できます。ロールの作成を選択すると、システムは自動的に oss-replication-{uuid} 形式でロールを作成し、KMS で暗号化されたオブジェクトをレプリケートするかどうかに基づいて、異なる権限ポリシーを付与します。

  • KMS で暗号化されたオブジェクトのレプリケート

    ロールを作成した後、画面の指示に従ってロールへの権限付与を完了する必要があります。権限付与が完了すると、ロールにはソースバケットからデスティネーションバケットへデータを同期するための正確な権限ポリシーと、AliyunKMSCryptoUserAccess ポリシー (Key Management Service (KMS) を管理する権限) が付与されます。

  • KMS で暗号化されたオブジェクトをレプリケートしない

    ロールを作成した後、画面の指示に従ってロールへの権限付与を完了する必要があります。権限付与が完了すると、ロールにはソースバケットからデスティネーションバケットへデータを同期するための正確な権限ポリシーが付与されます。

AliyunOSSRole

同一アカウント同一リージョンレプリケーションルールを作成する際、AliyunOSSRole を選択してレプリケーションタスクを完了できます。このロールを選択すると、システムは KMS で暗号化されたオブジェクトをレプリケートするかどうかに基づいて、異なる権限ポリシーを付与します。

  • KMS で暗号化されたオブジェクトのレプリケート

    AliyunOSSRole を選択すると、システムは自動的に AliyunOSSRole に AliyunOSSFullAccess (OSS を管理する権限) と AliyunKMSCryptoUserAccess (KMS を管理する権限) の権限ポリシーを付与します。

    警告

    このロールには、現在のアカウント配下にあるすべてのバケットと KMS に対するすべての操作を実行する権限があります。権限の範囲が広いため、注意してご使用ください。

  • KMS で暗号化されたオブジェクトをレプリケートしない

    AliyunOSSRole を選択すると、システムは自動的に AliyunOSSRole に AliyunOSSFullAccess (OSS を管理する権限) を付与します。

    警告

    このロールには、現在のアカウント配下にあるすべてのバケットに対するすべての操作を実行する権限があります。権限の範囲が広いため、注意してご使用ください。

カスタムロール

同一アカウント同一リージョンレプリケーションルールを作成する際、カスタムロールを使用してレプリケーションタスクを完了できます。RAM コンソールでカスタムロールを作成し、必要な権限をロールに付与する必要があります。

  1. 通常のサービスロールを作成します。

    ロールを作成する際、信頼されたエンティティのタイプを [Alibaba Cloud サービス] に、信頼されたサービスを [Object Storage Service (OSS)] に設定します。具体的な手順については、「通常のサービスロールの作成」をご参照ください。

  2. ロールに権限を付与します。

    以下のいずれかの方法でロールに権限を付与できます。

    RAM ロールへのシステムポリシーの付与

    警告

    システムポリシー AliyunOSSFullAccess を RAM ロールに付与できます。デフォルトでは、AliyunOSSFullAccess には現在のアカウント配下にあるすべてのバケットに対するすべての操作を実行する権限があります。注意してご使用ください。

    KMS で暗号化されたオブジェクトをデスティネーションバケットにレプリケートする場合は、AliyunKMSFullAccess システムポリシーもロールに付与する必要があります。

    具体的な手順については、「RAM ロールの権限管理」をご参照ください。

    RAM ロールへのカスタムポリシーの付与

    ソースバケット (src-bucket) とデスティネーションバケット (dest-bucket) 間のレプリケーションに必要な最小限の権限を RAM ロールに付与することを推奨します。

    説明

    実際の使用時には、ソースバケットとデスティネーションバケットの名前を適宜置き換えてください。

    {
       "Version":"1",
       "Statement":[
          {
             "Effect":"Allow",
             "Action":[
                "oss:ReplicateList",
              	"oss:ReplicateGet"
             ],
             "Resource":[
              	"acs:oss:*:*:src-bucket",
                "acs:oss:*:*:src-bucket/*"
             ]
          },
          {
             "Effect":"Allow",
             "Action":[
              	"oss:ReplicateList",
                "oss:ReplicateGet",
                "oss:ReplicatePut",
                "oss:ReplicateDelete"
             ],
             "Resource":[
              	"acs:oss:*:*:dest-bucket",
                "acs:oss:*:*:dest-bucket/*"
             ]
          }
       ]
    }

    具体的な手順については、「RAM ロールの権限管理」をご参照ください。

    説明

    KMS で暗号化されたオブジェクトをデスティネーションバケットにレプリケートする場合は、AliyunKMSFullAccess システムポリシーもロールに付与する必要があります。

重要

同一アカウントの同一リージョンでデータをレプリケートする場合、OSS はレプリケーションに使用する RAM ロールの権限ポリシーのみを検証し、ソースバケットまたはデスティネーションバケットに設定されたバケットポリシーは検証しません。

操作手順

OSS コンソールの使用

  1. OSSコンソールにログインします。

  2. バケット をクリックし、src-bucket をクリックします。

  3. 左側メニューで、データ管理 > 同一リージョン内のレプリケーション を選択します。

  4. 同一リージョン内のレプリケーション タブで、同一リージョン内のレプリケーション をクリックします。

  5. 同一リージョン内のレプリケーション ダイアログボックスで、以下のようにパラメーターを設定します。

    セクション

    パラメーター

    説明

    [ターゲットバケットの設定]

    [ソースバケット]

    ソースバケットのリージョンと名前が表示されます。

    [ターゲットバケット]

    [Alibaba Cloud アカウントに属するバケットを選択] を選択し、ドロップダウンリストから同じリージョン内のデスティネーションバケットの名前を選択します。

    [複製するオブジェクト]

    レプリケートするソースデータを選択します。

    • すべてのファイルの同期:バケット内のすべてのオブジェクトをデスティネーションバケットにレプリケートします。

    • [特定のプレフィックスを持つオブジェクトをレプリケート]:バケット内の指定されたプレフィックスを持つオブジェクトをデスティネーションバケットにレプリケートします。デフォルトでは、最大 10 個のプレフィックスを追加できます。プレフィックスの数を増やすには、テクニカルサポート に連絡して、最大 100 までの調整をリクエストしてください。

    オブジェクトタグ

    説明

    このパラメーターを設定するには、次の条件を満たす必要があります:

    • オブジェクトタグが設定されていること。

    • [削除マーカーのコピー][指定バージョンの削除操作をコピー] が選択されていないこと。

    [ルールを設定] チェックボックスをオンにすると、指定したタグを持つオブジェクトをデスティネーションバケットにレプリケートできます。最大 10 個のタグ (キーと値のペア) を追加できます。タグを追加した後、次のいずれかのタグフィルターポリシーを選択できます:

    • [すべてのタグを含む]:フィルターで指定されたタグセット内のすべてのタグがオブジェクトに含まれている場合にのみ、オブジェクトがレプリケートされます。

    • [いずれかのタグを含む]:フィルターで指定されたタグセット内のいずれかのタグがオブジェクトに含まれている場合に、オブジェクトがレプリケートされます。

    [ソース側の KMS 暗号化オブジェクトをレプリケーション]

    KMS で暗号化されたオブジェクトをデスティネーションバケットにレプリケートするかどうかを選択します。

    • [はい]:ソースオブジェクトまたはデスティネーションバケットが KMS マネージドキー (指定された CMK ID を持つ SSE-KMS) を使用して暗号化されている場合にオブジェクトをデスティネーションバケットにレプリケートします。

      説明

      HeadObjectGetBucketEncryption を使用して、それぞれソースオブジェクトと宛先バケットの暗号化ステータスを照会できます。

    • [いいえ]:KMS で暗号化されたオブジェクトをデスティネーションバケットにレプリケートしません。

    [CMK ID]

    KMS で暗号化されたオブジェクトをデスティネーションバケットにレプリケートすることを選択した場合、デスティネーションオブジェクトの暗号化に使用する KMS キーを指定する必要があります。

    KMS キーを指定する前に、KMS プラットフォームでデスティネーションバケットと同じリージョンに KMS キーを作成する必要があります。具体的な手順については、「キーの作成」をご参照ください。

    [RAM ロール]

    新しい RAM ロール を選択することを推奨します。ドロップダウンリストからロールの作成を選択した後、画面の指示に従ってロールへの権限付与を完了する必要があります。

    [AliyunOSSRole] またはカスタムロールを選択することもできます。これら 3 種類のロールの詳細については、「ロールの種類」をご参照ください。

    [レプリケーションポリシーの設定]

    [既存データの複製]

    同一リージョンレプリケーションルールが有効になる前にソースバケットに存在する履歴データをレプリケートするかどうかを選択します。

    • [レプリケート]:履歴データをデスティネーションバケットにレプリケートします。

      重要

      履歴データがレプリケートされると、ソースバケットからレプリケートされたオブジェクトが、デスティネーションバケット内の同名のオブジェクトを上書きする可能性があります。これらのファイルが失われるのを防ぐため、ソースバケットとデスティネーションバケットの両方でバージョニングを有効にすることを推奨します。

    • [レプリケートしない]:同一リージョンレプリケーションルールが有効になった後にアップロードまたは更新されたオブジェクトのみをレプリケートします。

    [削除操作のレプリケーション]

    ソースバケットの削除操作をデスティネーションバケットにレプリケートするかどうかを選択します。

    説明

    このオプションは、ソースバケットでバージョニングが有効になっていない場合にコンソールに表示されます。ソースバケットでバージョニングが有効になっている場合、このオプションは 削除マーカーのレプリケーション指定バージョンの削除操作をレプリケートする という 2 つの独立した設定に置き換えられます。

    • [はい] (同じデータセットが共有およびアクセスされるシナリオに適用):ソースバケット内のオブジェクトの作成、更新、削除の操作をデスティネーションバケットにレプリケートします。

      重要

      このポリシーでは、オブジェクトの作成、更新、削除がすべてデスティネーションバケットにレプリケートされます。ソースバケット内のオブジェクトを手動で削除したり、ライフサイクルルールによってオブジェクトが自動的に削除されたりすると、デスティネーションバケット内の対応するオブジェクトも削除され、回復できなくなります。

    • [いいえ] (ディザスタリカバリシナリオに適用):ソースバケット内のオブジェクトの作成と更新の操作のみをデスティネーションバケットにレプリケートします。削除操作はデスティネーションバケットに影響しません。

      説明

      この方法により、ソースバケットでの手動削除やライフサイクルルールによる自動削除が原因でデスティネーションバケットのデータが失われるのを効果的に防ぎます。

    [削除マーカーのレプリケーション]

    ソースバケットの削除マーカーをデスティネーションバケットにレプリケートするかどうかを選択します。

    • [レプリケート]:バージョン ID を指定せずにソースバケットからオブジェクトが削除された場合、OSS によってソースバケットに作成された削除マーカーがデスティネーションバケットに同期されます。これは、同じデータセットが共有およびアクセスされるシナリオに適用され、ソースバケットとデスティネーションバケットのデータ状態の一貫性を保証します。

      重要

      このポリシーを設定した後、ソースバケット内のオブジェクトを手動で削除したり、ライフサイクルルールによってオブジェクトが自動的に削除されたりすると、削除マーカーもデスティネーションバケットに同期され、デスティネーション側でもデータにアクセスできなくなります。

    • [レプリケートしない] (ディザスタリカバリシナリオに適用):ソースバケットで作成された削除マーカーはデスティネーションバケットにレプリケートされません。これにより、ソースバケットでの偶発的な削除やライフサイクルルールによる自動削除が原因でデスティネーションバケットのデータが失われるのを効果的に防ぎます。

    [指定バージョンの削除操作をレプリケートする]

    ソースバケット内の指定されたバージョンの完全削除操作をデスティネーションバケットにレプリケートするかどうかを選択します。

    説明

    データレプリケーションルールを作成した後、ライフサイクルルールや CopyObject によるソースバケットのストレージクラスの変更、およびバケット内のオブジェクトの最終アクセス時刻 (x-oss-last-access-time) 属性は、デスティネーションバケットに同期されません。

    • [レプリケート]:ソースファイル (現在のバージョンと履歴バージョンを含む) の指定されたバージョンが完全に削除されると、デスティネーションバケット内の対応するバージョンも完全に削除されます。これは、ソースデータとデスティネーションデータが完全に一致することを保証する必要があるシナリオに適用されます。

      重要

      このポリシーを設定した後、ソースバケットから完全に削除されたオブジェクトバージョンは、デスティネーションバケットで回復することはできません。注意してご使用ください。

    • [レプリケートしない] (ディザスタリカバリシナリオに適用):ソースオブジェクトの指定されたバージョンが完全に削除されても、デスティネーションバケット内の対応するバージョンは削除されません。これにより、ソースバケットでの完全削除操作がデスティネーションバケットのデータセキュリティに影響を与えるのを防ぎます。

    オブジェクトがマルチパートアップロードを使用してソースバケットにアップロードされた場合、各パートのアップロード操作がデスティネーションバケットにレプリケートされます。最終的に、すべてのパートに対して CompleteMultipartUpload が実行された後に生成されるオブジェクトも、デスティネーションバケットにレプリケートされます。

    同一リージョンレプリケーションとバージョニングを組み合わせた場合のレプリケーション動作については、「同一リージョンレプリケーションとバージョニングの組み合わせ」をご参照ください。

  6. [OK] をクリックし、表示されるダイアログボックスで 有効化 をクリックします。

    • 同一リージョンレプリケーションルールが作成された後、ルールを編集または削除することはできません。

    • レプリケーションタスクは、同一リージョンレプリケーションルールが設定されてから 3〜5 分後に開始されます。レプリケーションの進捗状況は、ソースバケットの 同一リージョン内のレプリケーション タブで確認できます。

    • バケット間の同一リージョンレプリケーションは非同期 (ほぼリアルタイム) のレプリケーションを使用するため、データをデスティネーションバケットにレプリケートするために必要な時間はデータのサイズに依存し、通常は数分から数時間かかります。

Alibaba Cloud SDK の使用

Java、Python、Go の SDK のみが同一アカウント同一リージョンレプリケーションをサポートしています。

Java

import com.aliyun.oss.ClientException;
import com.aliyun.oss.OSS;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.OSSClientBuilder;
import com.aliyun.oss.OSSException;
import com.aliyun.oss.model.AddBucketReplicationRequest;
import com.aliyun.oss.ClientBuilderConfiguration;
import com.aliyun.oss.common.comm.SignVersion;

public class Demo {

    public static void main(String[] args) throws Exception {
        // この例では、中国 (杭州) リージョンのエンドポイントを使用します。実際にご利用のリージョンに基づいてエンドポイントを指定してください。
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // エンドポイントに対応するリージョン (cn-hangzhou など) を指定します。
        String region = "cn-hangzhou";
        // プロジェクトコードにアクセス資格情報を保存しないことを強く推奨します。そうしないと、アクセス資格情報が漏洩し、アカウントのすべてのリソースのセキュリティが損なわれる可能性があります。この例では、アクセス資格情報は環境変数から取得されます。このサンプルコードを実行する前に、環境変数を設定してください。
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // ソースバケットの名前を指定します。
        String bucketName = "src-bucket";
        // データのレプリケート先のデスティネーションバケットを指定します。デスティネーションバケットとソースバケットは、同じアカウントに属している必要があります。
        String targetBucketName = "dest-bucket";
        // デスティネーションバケットのリージョンを指定します。デスティネーションバケットとソースバケットは、同じリージョンにある必要があります。
        String targetBucketLocation = "oss-cn-hangzhou";

        // OSSClient インスタンスを作成します。
        // OSSClient インスタンスが不要になったら、シャットダウンメソッドを呼び出してリソースを解放します。
        ClientBuilderConfiguration clientBuilderConfiguration = new ClientBuilderConfiguration();
        // V4 署名アルゴリズムの使用を明示的に宣言します。
        clientBuilderConfiguration.setSignatureVersion(SignVersion.V4);
        OSS ossClient = OSSClientBuilder.create()
                .endpoint(endpoint)
                .credentialsProvider(credentialsProvider)
                .clientConfiguration(clientBuilderConfiguration)
                .region(region)
                .build();

        try {
            AddBucketReplicationRequest request = new AddBucketReplicationRequest(bucketName);

            request.setTargetBucketName(targetBucketName);
            request.setTargetBucketLocation(targetBucketLocation);
            // 履歴データはデフォルトでレプリケートされます。履歴データのレプリケーションを無効にするには、これを false に設定します。
            request.setEnableHistoricalObjectReplication(false);
            // OSS にデータレプリケーションを許可するロールの名前を指定します。このロールには、ソースバケットで同一リージョンレプリケーションを実行し、デスティネーションバケットでレプリケートされたオブジェクトを受信する権限が付与されている必要があります。
            request.setSyncRole("yourRole");
            // OSS が SSE-KMS 暗号化を使用して作成されたオブジェクトをレプリケートするかどうかを指定します。
            //request.setSseKmsEncryptedObjectsStatus("Enabled");
            // SSE-KMS キー ID を指定します。Status が Enabled に設定されている場合、この要素は必須です。
            //request.setReplicaKmsKeyID("3542abdd-5821-4fb5-a425-90adca***");
            //List prefixes = new ArrayList();
            //prefixes.add("image/");
            //prefixes.add("video");
            //prefixes.add("a");
            //prefixes.add("A");
            // レプリケートするオブジェクトのプレフィックスを指定します。プレフィックスを指定すると、プレフィックスに一致するオブジェクトのみがデスティネーションバケットにレプリケートされます。
            //request.setObjectPrefixList(prefixes);
            //List actions = new ArrayList();
            //actions.add(AddBucketReplicationRequest.ReplicationAction.PUT);
            // ソースバケット内のオブジェクトの作成および更新操作をデスティネーションバケットにレプリケートします。
            //request.setReplicationActionList(actions);
            ossClient.addBucketReplication(request);
        } catch (OSSException oe) {
            System.out.println("Caught an OSSException, which means your request made it to OSS, "
                    + "but was rejected with an error response for some reason.");
            System.out.println("Error Message:" + oe.getErrorMessage());
            System.out.println("Error Code:" + oe.getErrorCode());
            System.out.println("Request ID:" + oe.getRequestId());
            System.out.println("Host ID:" + oe.getHostId());
        } catch (ClientException ce) {
            System.out.println("Caught an ClientException, which means the client encountered "
                    + "a serious internal problem while trying to communicate with OSS, "
                    + "such as not being able to access the network.");
            System.out.println("Error Message:" + ce.getMessage());
        } finally {
            if (ossClient != null) {
                ossClient.shutdown();
            }
        }
    }
}        

Python

# -*- 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.ProviderAuth(EnvironmentVariableCredentialsProvider())
# ソースバケットのリージョンに対応するエンドポイントを指定します。たとえば、ソースバケットが中国 (杭州) リージョンにある場合、エンドポイントを https://oss-cn-hangzhou.aliyuncs.com に設定します。
# ソースバケットの名前 (例: src-bucket) を指定します。
bucket = oss2.Bucket(auth, 'https://oss-cn-hangzhou.aliyuncs.com', 'src-bucket')
replica_config = ReplicationRule(
    # データのレプリケート先のデスティネーションバケットを指定します。デスティネーションバケットとソースバケットは、同じアカウントに属している必要があります。
    target_bucket_name='dest-bucket',
    # デスティネーションバケットのリージョンを指定します。デスティネーションバケットとソースバケットは、同じリージョンにある必要があります。
    target_bucket_location='oss-cn-hangzhou',
    # OSS にデータレプリケーションを許可するロールの名前を指定します。このロールには、ソースバケットで同一リージョンレプリケーションを実行し、デスティネーションバケットでレプリケートされたオブジェクトを受信する権限が付与されている必要があります。
    sync_role_name='roleNameTest',
)

# レプリケートするオブジェクトのプレフィックスを指定します。プレフィックスを指定すると、プレフィックスに一致するオブジェクトのみがデスティネーションバケットにレプリケートされます。
# prefix_list = ['prefix1', 'prefix2']
# データレプリケーションルールを設定します。
# replica_config = ReplicationRule(
     # prefix_list=prefix_list,
     # ソースバケット内のオブジェクトの作成および更新操作をデスティネーションバケットにレプリケートします。
     # action_list=[ReplicationRule.PUT],
     # データのレプリケート先のデスティネーションバケットを指定します。
     # target_bucket_name='dest-bucket',
     # デスティネーションバケットのリージョンを指定します。
     # target_bucket_location='yourTargetBucketLocation',
     # 履歴データはデフォルトでレプリケートされます。履歴データのレプリケーションを無効にするには、これを False に設定します。
     # is_enable_historical_object_replication=False,
     # 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)

Go

package main

import (
	"encoding/xml"
	"fmt"
	"github.com/aliyun/aliyun-oss-go-sdk/oss"
	"os"
)

func HandleError(err error) {
	fmt.Println("Error:", err)
	os.Exit(-1)
}

// データレプリケーションを有効にします。
func main() {
	// 環境変数からアクセス資格情報を取得します。このサンプルコードを実行する前に、OSS_ACCESS_KEY_ID および OSS_ACCESS_KEY_SECRET 環境変数が設定されていることを確認してください。
	provider, err := oss.NewEnvironmentVariableCredentialsProvider()
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}
	// OSSClient インスタンスを作成します。
	// yourEndpoint をバケットに対応するエンドポイントに設定します。たとえば、バケットが中国 (杭州) リージョンにある場合は、https://oss-cn-hangzhou.aliyuncs.com に設定します。実際の状況に応じて他のリージョンを指定してください。
	client, err := oss.New("yourEndpoint", "", "", oss.SetCredentialsProvider(&provider))
	if err != nil {
		fmt.Println("Error:", err)
		os.Exit(-1)
	}
	// ソースバケットの名前を指定します。
	srcbucketName := "yourSrcBucket"
	// データのレプリケート先のデスティネーションバケットを指定します。
	destBucketName := "yourDestBucket"
	// レプリケートするオブジェクトのプレフィックス prefix_1 と prefix_2 を指定します。プレフィックスを指定すると、プレフィックスに一致するオブジェクトのみがデスティネーションバケットにレプリケートされます。
	// ソースバケット内のすべてのオブジェクトをデスティネーションバケットにレプリケートする場合は、プレフィックスを指定する必要はありません。
	prefix1 := "prefix_1"
	prefix2 := "prefix_2"
	// SSE-KMS キー ID を指定します。Status が Enabled に設定されている場合、この要素は必須です。
	keyId := "c4d49f85-ee30-426b-a5ed-95e9****"
	// OSS が SSE-KMS 暗号化を使用して作成されたオブジェクトをレプリケートするかどうかを指定します。
	source := "Enabled"
	prefixSet := oss.ReplicationRulePrefix{Prefix: []*string{&prefix1, &prefix2}}
	reqReplication := oss.PutBucketReplication{
		Rule: []oss.ReplicationRule{
			{
				PrefixSet: &prefixSet,
				// ソースバケット内のオブジェクトの作成および更新操作をデスティネーションバケットにレプリケートします。
				Action: "PUT",
				Destination: &oss.ReplicationRuleDestination{
					Bucket: destBucketName,
					// デスティネーションバケットのリージョンを指定します。ソースバケットとデスティネーションバケットは、同じリージョンにある必要があります。
					Location: "oss-cn-hangzhou",
				},
				// 履歴データはデフォルトでレプリケートされます。履歴データのレプリケーションを無効にするには、これを disabled に設定します。
				HistoricalObjectReplication: "disabled",
				// OSS にデータレプリケーションを許可するロールの名前を指定します。このロールには、ソースバケットで同一リージョンレプリケーションを実行し、デスティネーションバケットでレプリケートされたオブジェクトを受信する権限が付与されている必要があります。
				SyncRole:                "yourRole",
				EncryptionConfiguration: &keyId,
				SourceSelectionCriteria: &source,
			},
		},
	}

	xmlBody, err := xml.Marshal(reqReplication)
	if err != nil {
		HandleError(err)
	}
	err = client.PutBucketReplication(srcbucketName, string(xmlBody))

	if err != nil {
		HandleError(err)
	}

	fmt.Println("Put Bucket Replication Success!")
}

ossutil コマンドラインツールの使用

ossutil を使用して同一リージョンレプリケーションを有効にする具体的な手順については、「put-bucket-replication」をご参照ください。

REST API の使用

プログラムに高度なカスタマイズ要件がある場合は、REST API リクエストを直接送信できます。REST API リクエストを直接送信するには、署名を計算するためのコードを手動で記述する必要があります。詳細については、「PutBucketReplication」をご参照ください。