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

Object Storage Service:同一アカウント内のクロスリージョンレプリケーション

最終更新日:Aug 28, 2026

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

前提条件

  • 特定のリージョンにソースバケットとして機能するバケット (バケット A) を作成済みであること。 Alibaba Cloud アカウント ID、バケット A の名前、およびそのリージョンを記録しておいてください。

  • 同一アカウント配下の別のリージョンに送信先バケットとして機能する別のバケット (バケット B) を作成済みであること。 バケット B の名前とそのリージョンを記録しておいてください。

ロールタイプ

クロスリージョンレプリケーションを設定する際、Object Storage Service (OSS) がソースバケットと送信先バケット間でオブジェクトをレプリケートするために使用するロールを指定する必要があります。 次のいずれかのロールタイプを使用できます。

重要

RAM ユーザーがロールを作成するには、ram:CreateRoleram:GetRoleram:ListPoliciesForRole、および ram:AttachPolicyToRole の権限が必要です。 しかし、ram:CreateRoleram:GetRole のようなロール関連の権限を RAM ユーザーに付与すると、セキュリティリスクが生じます。 セキュリティを向上させるために、Alibaba Cloud アカウントを使用して RAM ロールを作成し、必要な権限を付与することを推奨します。 これにより、RAM ユーザーはそのロールを直接使用できます。

(推奨) 新しいロールの作成

クロスリージョンレプリケーションルールを作成する際に、新しいロールを作成することを選択できます。 ロールは oss-replication-{uuid} の形式の名前で自動的に作成されます。 このロールにアタッチされる権限ポリシーは、Key Management Service (KMS) で暗号化されたオブジェクトをレプリケートするかどうかによって異なります。

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

    ロールが作成された後、画面の指示に従って権限を付与します。 承認されると、ロールにはソースバケットから送信先バケットへのレプリケーションのためのきめ細かい権限ポリシーと、KMS を管理するための AliyunKMSCryptoUserAccess ポリシーが付与されます。

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

    ロールが作成された後、画面の指示に従って権限を付与します。 承認されると、ロールにはソースバケットから送信先バケットへのレプリケーションのためのきめ細かい権限ポリシーが付与されます。

AliyunOSSRole

クロスリージョンレプリケーションルールを作成する際に、AliyunOSSRole を選択してレプリケーションタスクを完了できます。 このロールを選択した場合、KMS で暗号化されたオブジェクトをレプリケートするかどうかに基づいて、異なる権限ポリシーがアタッチされます。

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

    AliyunOSSRole を選択すると、AliyunOSSFullAccess (OSS の管理用) および AliyunKMSCryptoUserAccess (KMS の管理用) ポリシーが自動的にロールにアタッチされます。

    警告

    このロールには、アカウント配下のすべてのバケットと KMS キーに対する完全なアクセス権があります。 権限が広範であるため、このロールは注意して使用してください。

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

    AliyunOSSRole を選択すると、AliyunOSSFullAccess ポリシー (OSS の管理用) が自動的にロールにアタッチされます。

    警告

    このロールには、アカウント配下のすべてのバケットに対する完全なアクセス権があります。 権限が広範であるため、このロールは注意して使用してください。

カスタムロール

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

  1. 通常のサービスロールの作成

    ロール作成中に、信頼されたエンティティとして [Alibaba Cloud Service] を、信頼されたサービスとして [OSS] を選択します。 詳細については、「通常のサービスロールの作成」をご参照ください。

  2. ロールへの権限の付与

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

    システムポリシーのアタッチ

    警告

    AliyunOSSFullAccess システムポリシーを RAM ロールにアタッチできます。 デフォルトでは、AliyunOSSFullAccess は現在のアカウント配下のすべてのバケットに対する完全な権限を提供します。 このポリシーは注意して使用してください。

    KMS で暗号化されたオブジェクトを送信先バケットにレプリケートする場合は、AliyunKMSFullAccess システムポリシーもロールにアタッチする必要があります。

    詳細については、「RAM ロールの権限管理」をご参照ください。

    カスタムポリシーのアタッチ

    RAM ポリシーを使用して、ソースバケット (src-bucket) から送信先バケット (dest-bucket) へのレプリケーションに必要な最小限の権限を付与します。

    説明

    ソースバケットと送信先バケットの名前を実際のバケット名に置き換えてください。

    {
       "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. 左側メニューで、バケット をクリックします。 次に、ソースバケットの名前をクリックします。

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

  4. クロスリージョンレプリケーション タブで、同期を有効にする をクリックします。

  5. クロスリージョンレプリケーション パネルで、次の表の説明に従ってパラメーターを設定します。

    セクション

    パラメーター

    説明

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

    [ソースバケット]

    ソースバケットのリージョンと名前。

    [ターゲットバケット]

    このアカウントの中でバケットを一つ選択 を選択します。 次に、ドロップダウンリストから送信先バケットのリージョンと名前を選択します。

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

    レプリケートするソースオブジェクトを選択します。

    • [同期オブジェクト]:ソースバケットから送信先バケットにすべてのオブジェクトをレプリケートします。

    • [プレフィックスを指定する]:指定されたプレフィックスを持つオブジェクトを送信先バケットにレプリケートします。 最大 10 個のプレフィックスを追加できます。 この制限を増やすには、テクニカルサポート に連絡して、制限を最大 100 まで増やすことができます。

    クロスリージョンレプリケーションは、送信先バケットでのカスタムストレージパスをサポートしていません。 レプリケートされたオブジェクトはソースバケットと同じディレクトリ構造を維持するため、事前に送信先バケットにフォルダーを作成する必要はありません。 オブジェクトを別のパスに保存するには、まずレプリケーションを完了してから、ossutil を使用してオブジェクトをターゲットディレクトリにコピーまたは移動します。

    [オブジェクトのタグ付け]

    説明

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

    • オブジェクトタグを設定済みであること。

    • [削除マーカーのレプリケート][指定されたオブジェクトバージョンの削除のレプリケート] のチェックボックスがオフになっていること。

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

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

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

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

    KMS で暗号化されたオブジェクトを送信先バケットにレプリケートするかどうかを選択します。

    • [はい]:ソースオブジェクトまたは送信先バケットが KMS 管理キー (指定された CMK ID を持つ SSE-KMS) を使用して暗号化されている場合に、オブジェクトを送信先バケットにレプリケートするには、このオプションを選択します。

      説明

      HeadObject および GetBucketEncryption API を呼び出して、それぞれソースオブジェクトと送信先バケットの暗号化ステータスを照会できます。

    • [いいえ]:KMS で暗号化されたオブジェクトを送信先バケットにレプリケートしません。

    [CMK ID]

    送信先オブジェクトを暗号化するための KMS キーを指定します。

    まず、送信先バケットと同じリージョンの KMS コンソールで KMS キーを作成する必要があります。 詳細については、「キーの作成」をご参照ください。

    [RAM ロール名]

    新しい RAM ロール を選択することを推奨します。 ドロップダウンリストからこのオプションを選択し、画面の指示に従って権限を付与します。

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

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

    [既存データの複製]

    クロスリージョンレプリケーションルールが有効になる前にソースバケットに存在していた既存のオブジェクトをレプリケートするかどうかを選択します。

    • [はい]:既存の履歴データを送信先バケットにレプリケートします。

      重要

      履歴データをレプリケートすると、ソースバケットのオブジェクトが送信先バケットの同名のオブジェクトを上書きする可能性があります。 データの損失を防ぐため、ソースバケットと送信先バケットの両方でバージョニングを有効にすることを推奨します。

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

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

    ソースバケットから送信先バケットへの削除操作をレプリケートするかどうかを選択します。

    説明

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

    • はい (同じデータセットを共有およびアクセスする必要があるシナリオ向け):ソースバケット内のオブジェクトの作成、更新、および削除操作を送信先バケットにレプリケートします。

      重要

      このポリシーでは、すべての作成、更新、および削除操作がレプリケートされます。 ソースバケットからオブジェクトを手動で、またはライフサイクルルールを介して削除すると、送信先バケット内の対応するオブジェクトも削除され、回復できなくなります。

    • いいえ (災害復旧シナリオ向け):ソースバケット内のオブジェクトの作成および更新操作のみをレプリケートします。 削除操作は送信先バケットに影響しません。

      説明

      これにより、ソースバケットでの手動削除または自動化されたライフサイクルルールによる削除によって引き起こされる、送信先バケットでの偶発的なデータ損失を防ぎます。

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

    ソースバケットから送信先バケットへの削除マーカーをレプリケートするかどうかを選択します。

    • レプリケート:バージョン ID を指定せずにオブジェクトがソースバケットから削除されると、OSS はソースバケットに削除マーカーを作成し、それが送信先バケットにレプリケートされます。 これは、同じデータセットを共有およびアクセスし、ソースバケットと送信先バケットが一貫した状態であることを確認する必要があるシナリオに適しています。

      重要

      このポリシーでは、手動で、またはライフサイクルルールを介してソースバケットからオブジェクトを削除すると、削除マーカーが送信先バケットにレプリケートされ、そこでもデータにアクセスできなくなります。

    • レプリケートしない (災害復旧シナリオ向け):ソースバケットで作成された削除マーカーは、送信先バケットにレプリケートされません。 これにより、ソースバケットでの偶発的な削除または自動化されたライフサイクルルールによる削除によって引き起こされる、送信先バケットでのデータ損失を効果的に防ぎます。

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

    ソースバケットから特定のオブジェクトバージョンを完全に削除する操作を、送信先バケットにレプリケートするかどうかを選択します。

    説明

    データレプリケーションルールを作成した後、ライフサイクルルールまたは CopyObject API によって引き起こされるソースバケット内のオブジェクトのストレージクラスの変更は、送信先バケットに同期されません。 さらに、ソースバケット内のオブジェクトの最終アクセス時間 (x-oss-last-access-time) 属性も同期されません。

    • レプリケート:現行バージョンと非現行バージョンを含むソースオブジェクトの特定のバージョンが完全に削除されると、送信先バケットの対応するバージョンも完全に削除されます。 これは、ソースデータと送信先データが完全に同一である必要があるシナリオに適しています。

      重要

      このポリシーでは、ソースバケットから完全に削除されたオブジェクトバージョンは、送信先バケットから回復できません。 このオプションは注意して選択してください。

    • レプリケートしない (災害復旧シナリオ向け):ソースオブジェクトの特定のバージョンが完全に削除されても、送信先バケットの対応するバージョンは削除されません。 これにより、ソースバケットでの完全な削除操作から送信先バケットのデータを保護します。

    オブジェクトがマルチパートアップロードを使用してソースバケットにアップロードされた場合、各パートのアップロード操作が送信先バケットにレプリケートされます。 最後に、すべてのパートに対して CompleteMultipartUpload API が実行された後に作成されるオブジェクトも、送信先バケットにレプリケートされます。

    バージョニング使用時のレプリケーション動作の詳細については、「バージョニングを使用したレプリケーション」をご参照ください。

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

    [アクセラレーションタイプ]

    [トランスミッション加速] のみがサポートされています。 Transfer Acceleration は、中国本土内外のリージョン間でのクロスリージョンレプリケーションの速度を向上させます。 Transfer Acceleration を有効にすると、追加料金が発生します。 課金の詳細については、「Transfer Acceleration の料金」をご参照ください。

    [Replication Time Control (RTC)]

    説明

    中国本土では、次のリージョン間の CRR タスクに対してのみ RTC を有効にできます:中国 (杭州)、中国 (上海)、中国 (青島)、中国 (北京)、中国 (張家口)、中国 (深セン)。

    米国 (シリコンバレー) と米国 (バージニア) のリージョン間の CRR タスクに対してのみ RTC を有効にできます。

    履歴データのレプリケーションを含まないタスクの場合、RTC は有効化してから 15 分以内に有効になります。 履歴データのレプリケーションを含むタスクの場合、RTC は履歴データのレプリケーションが完了してから約 1 時間後に有効になります。 有効になると、RTC は新しく書き込まれたオブジェクトの 99.99% が 10 分以内にレプリケートされることを保証します。 RTC を有効にすると、RTC 料金が発生します。

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

    • クロスリージョンレプリケーションルールが作成されると、編集または削除はできません。

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

    • クロスリージョンレプリケーションは非同期であるため、データを送信先バケットにレプリケートするために必要な時間はデータサイズによって異なり、通常は数分から数時間かかります。

Alibaba Cloud SDK

同一アカウント内のクロスリージョンレプリケーションをサポートしているのは、Java、Python、Go の SDK のみです。

Java

import com.aliyun.oss.*;
import com.aliyun.oss.common.auth.*;
import com.aliyun.oss.common.comm.SignVersion;
import com.aliyun.oss.model.AddBucketReplicationRequest;

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-shanghai";

        // OSSClient インスタンスを作成します。
        // OSSClient インスタンスが不要になったら、shutdown メソッドを呼び出してリソースを解放します。
        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-shanghai',
)

# レプリケートするオブジェクトのプレフィックスを指定します。 プレフィックスを指定すると、そのプレフィックスを持つオブジェクトのみが送信先バケットにレプリケートされます。
# 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,
     # データレプリケーションに使用されるデータ転送リンクを指定します。
     # target_transfer_type='oss_acc',    
  #)

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

Go

package main

import (
	"context"
	"flag"
	"log"

	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss"
	"github.com/aliyun/alibabacloud-oss-go-sdk-v2/oss/credentials"
)

// グローバル変数を定義します。
var (
	region     string // バケットが配置されているリージョン。
	bucketName string // バケットの名前。
)

// コマンドラインパラメータを初期化するために使用される init 関数を指定します。
func init() {
	flag.StringVar(&region, "region", "", "バケットが配置されているリージョン。")
	flag.StringVar(&bucketName, "bucket", "", "バケットの名前。")
}

func main() {
	// コマンドラインパラメータを解析します。
	flag.Parse()

	var (
		targetBucket   = "target bucket name" // ターゲットバケットの名前。
		targetLocation = "oss-cn-beijing"     // ターゲットバケットが配置されているリージョン。
	)

	// バケットの名前が指定されているかどうかを確認します。
	if len(bucketName) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメータです。バケット名が必要です。")
	}

	// リージョンが指定されているかどうかを確認します。
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("無効なパラメータです。リージョンが必要です。")
	}

	// デフォルトの構成を読み込み、認証情報プロバイダーとリージョンを指定します。
	cfg := oss.LoadDefaultConfig().
		WithCredentialsProvider(credentials.NewEnvironmentVariableCredentialsProvider()).
		WithRegion(region)

	// OSS クライアントを作成します。
	client := oss.NewClient(cfg)

	// バケットのデータレプリケーションを有効にするリクエストを作成します。
	request := &oss.PutBucketReplicationRequest{
		Bucket: oss.Ptr(bucketName), // バケットの名前。
		ReplicationConfiguration: &oss.ReplicationConfiguration{
			Rules: []oss.ReplicationRule{
				{
					RTC: &oss.ReplicationTimeControl{
						Status: oss.Ptr("enabled"), // RTC 機能を有効にします。
					},
					Destination: &oss.ReplicationDestination{
						Bucket:       oss.Ptr(targetBucket),   // ターゲットバケットの名前。
						Location:     oss.Ptr(targetLocation), // ターゲットバケットが配置されているリージョン。
						TransferType: oss.TransferTypeOssAcc,  // 転送のタイプ。
					},
					HistoricalObjectReplication: oss.HistoricalObjectReplicationEnabled, // 既存データレプリケーション機能を有効にします。
				},
			},
		},
	}

	// データレプリケーションを有効にします。
	result, err := client.PutBucketReplication(context.TODO(), request)
	if err != nil {
		log.Fatalf("バケットレプリケーションの設定に失敗しました %v", err)
	}

	// 結果を表示します。
	log.Printf("バケットレプリケーションの設定結果: %#v\n", result)
}

ossutil CLI

コマンドラインツール ossutil を使用してクロスリージョンレプリケーションを有効にする詳細な手順については、「put-bucket-replication」をご参照ください。

REST API

アプリケーションに特定の要件がある場合は、直接 REST API リクエストを行うことができます。 その場合、署名を手動で計算するコードを記述する必要があります。 詳細については、「PutBucketReplication」をご参照ください。

関連トピック