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

Object Storage Service:アカウント内のリージョンにあるバケットから別のアカウント内の別のリージョンにある別のバケットにデータをコピーする

最終更新日:Feb 27, 2025

クロスアカウントクロスリージョンレプリケーション(CRR)を使用すると、Alibaba Cloud アカウント A 内のリージョンにあるバケットから Alibaba Cloud アカウント B 内の別のリージョンにある別のバケットに Object Storage Service (OSS) オブジェクトをレプリケートできます。

前提条件

  • CRR タスクのソースバケットとして機能するバケット A は、アカウント A 内のリージョンに作成されます。アカウント A の UID、バケット A の名前、およびバケット A が配置されているリージョンが記録されます。

  • アカウント A には、 oss:PutBucketReplicationoss:GetBucketReplicationoss:DeleteBucketReplication、oss:GetBucketReplicationLocation、および oss:GetBucketReplicationProgress の権限が必要です。詳細については、「RAM ユーザーにカスタムポリシーをアタッチする」をご参照ください。

  • CRR タスクのデスティネーションバケットとして機能するバケット B は、アカウント B 内の別のリージョンに作成されます。アカウント B の UID、バケット B の名前、およびバケット B が配置されているリージョンが記録されます。

ロールの承認

アカウントを跨いでのデータレプリケーションには、異なる Alibaba Cloud アカウントに属する 2 つのバケットが必要です。アカウントを跨いでのデータレプリケーションに必要な信頼ポリシーと最小権限について、以下に説明します。

  1. アカウント A を使用して、次の操作を実行します。

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

      重要

      RAM ユーザーを使用して RAM ロールを作成できます。RAM ユーザーには、 ram:CreateRoleram:GetRoleram:ListRolesram:ListPoliciesForRoleram:AttachPolicyToRole の権限が必要です。ただし、RAM ユーザーに ram:CreateRoleram:GetRole などの権限を付与すると、セキュリティリスクが発生する可能性があります。RAM ユーザーが関連付けられている Alibaba Cloud アカウントを使用して RAM ロールを作成し、必要な権限を RAM ロールに付与できます。その後、RAM ユーザーは Alibaba Cloud アカウントによって作成された RAM ロールを引き受けることができます。

      RAM ロールを作成する際は、[Alibaba Cloud サービス] に [標準サービスロール] を設定し、[OSS] を信頼できるサービスとして設定します。詳細については、「標準サービスロールを作成する」をご参照ください。

      説明

      RAM ロールの作成後、後続の権限付与のために、[基本情報] セクションに RAM ロールの Alibaba Cloud Resource Name (ARN) を記録します。

    2. ソースバケットで CRR を実行するための権限を RAM ロールに付与します。

      次のいずれかの方法を使用して、RAM ロールに権限を付与できます。

      必要なシステムポリシーを RAM ロールにアタッチする

      警告

      AliyunOSSFullAccess システムポリシーを RAM ロールにアタッチします。AliyunOSSFullAccess システムポリシーがアタッチされている RAM ロールには、現在の Alibaba Cloud アカウント内のすべてのバケットに対するすべての操作を実行するための権限があります。システムポリシーを RAM ロールにアタッチする際は注意してください。

      カスタムポリシーを RAM ロールにアタッチする

      RAM ポリシーを使用して、ソースバケットで CRR を実行するために必要な最小限の権限を RAM ロールに付与できます。

      説明

      ビジネス要件に基づいて、src-bucket をソースバケットの名前に置き換えます。

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

      Key Management Service (KMS) によって暗号化されたオブジェクトをデスティネーションバケットにレプリケートする場合、AliyunKMSFullAccess システムポリシーを RAM ロールにアタッチする必要があります。システムポリシーを RAM ロールにアタッチする方法の詳細については、「RAM ロールに権限を付与する」をご参照ください。

  2. アカウント B を使用して、デスティネーションバケットにレプリケートするオブジェクトを受信するための権限を RAM ロールに付与します。

    方法 1: (推奨)GUI で追加する

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

    2. 左側のナビゲーションウィンドウで、バケットリスト をクリックします。[バケット] ページで、dest-bucket という名前のバケットを見つけ、バケット名をクリックします。

    3. 左側のナビゲーションツリーで、権限管理 > バケット承認ポリシー を選択します。

    4. バケット承認ポリシー タブで、GUI で追加 をクリックし、レプリケーションオブジェクトの受信 をクリックします。

    5. レプリケーションオブジェクトの受信 パネルで、UID および RAM ロールの取得方法[レプリケーションのソース RAM ロールの ARN] に設定し、手順 1 で作成した RAM ロールの ARN を ソースから RAM ロールの ARN をコピーする に入力します。

    6. ポリシーの生成 をクリックします。

    方法 2: 構文で追加する

    1. 左側のナビゲーションツリーで、権限管理 > バケット承認ポリシー を選択します。

    2. バケット承認ポリシー タブで、構文で追加 をクリックし、[編集] をクリックします。

    3. コードエディタで、次のバケットポリシーを入力します。

      重要
      • ポリシー ステートメントを指定してバケットポリシーを構成し、RAM ロールに必要な権限を付与する場合、新しいバケットポリシーは既存のバケットポリシーを上書きします。新しいバケットポリシーに既存のバケットポリシーの内容が含まれていることを確認してください。そうしないと、既存のバケットポリシーの承認が失敗する可能性があります。

      • ビジネス要件に基づいて、ロール名を、作成した RAM ロールの名前に置き換えます。作成した RAM ロールの名前に大文字が含まれている場合は、小文字に変換する必要があります。 たとえば、作成した RAM ロールの名前が AliyunOssDrsRole の場合、AliyunOssDrsRole を aliyunossdrsrole に変換する必要があります。次の例では、デスティネーションバケットの名前は dest-bucket、ソースバケットが属するアカウントの UID は 137918634953xxxx、デスティネーションバケットが属するアカウントの UID は 111933544165xxxx です。

      {
         "Version":"1",
         "Statement":[
            {
              "Effect":"Allow",
              "Action":[
                  "oss:ReplicateList",
                  "oss:ReplicateGet",
                  "oss:ReplicatePut",
                  "oss:ReplicateDelete"			
               ],
              "Principal": [
                  "arn:sts::137918634953xxxx:assumed-role/aliyunossdrsrole/*"		 
      		 ],
               "Resource":[
                  "acs:oss:*:111933544165xxxx:dest-bucket",          	
                  "acs:oss:*:111933544165xxxx:dest-bucket/*"
               ]
            }
         ]
      }
    4. [保存] をクリックします。表示されるメッセージで、[OK] をクリックします。

SSE-KMS を使用して暗号化されたオブジェクトをレプリケートする

説明

SSE-KMS を使用して暗号化されたオブジェクトは、次のリージョンのバケットにレプリケートできます。中国(杭州)、中国(上海)、中国(深圳)、中国(河源)、中国(広州)、中国(青島)、中国(北京)、中国(張家口)、中国(フフホト)、中国(ウランチャブ)、中国(成都)、中国東部 2 金融、中国(香港)、シンガポール、マレーシア(クアラルンプール)、インドネシア(ジャカルタ)、フィリピン(マニラ)、タイ(バンコク)、日本(東京)、米国(シリコンバレー)、米国(バージニア)、ドイツ(フランクフルト)、英国(ロンドン)。

アカウント A に属するソースバケットからアカウント B に属するデスティネーションバケットに SSE-KMS を使用して暗号化されたオブジェクトをコピーする場合は、アカウント B を使用して次の手順を実行します。

  1. KMS コンソールにログオンします。左側のナビゲーションウィンドウで、[リソース] > [インスタンス] を選択します。[インスタンス] ページで、デスティネーションバケットと同じリージョンに KMS インスタンスを作成して有効にします。KMS インスタンスを作成する際は、[アクセス管理数量] パラメーターの値が 2 以上であることを確認してください。その他のパラメーターについてはデフォルト設定を保持します。詳細については、「KMS インスタンスを購入して有効にする」をご参照ください。

  2. KMS インスタンスにキーを作成します。キの種類はデフォルトにすることはできません。ソフトウェアキーを使用することをお勧めします。詳細については、「ソフトウェアで保護されたキー」をご参照ください。

    説明

    キーを作成した後、後続のレプリケーションルールの構成のために、[基本情報] セクションにキーの ARN を記録します。

  3. キーのポリシーを構成します。キーポリシーを構成する際は、[クロスアカウントユーザー]前の手順 で作成したロールの ARN に設定します。詳細については、「キーポリシーを構成する」をご参照ください。

    重要

    SSE-KMS で暗号化されたオブジェクトをアカウントを跨いでレプリケートするには、キーポリシーに少なくとも kms:Decrypt および kms:GenerateDataKey の権限が必要です。KMS コンソールでキーポリシーを構成すると、上記の権限がデフォルトで追加されます。API 操作を呼び出してカスタムキーポリシーを構成する場合は、ポリシーに少なくとも kms:Decrypt および kms:GenerateDataKey の権限があることを確認してください。

方法

OSS コンソールを使用する

アカウント A を使用して、ソースバケットの CRR ルールを作成します。

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

  2. 左側のナビゲーションウィンドウで、バケットリスト をクリックします。[バケット] ページで、ソースバケットの名前をクリックします。

  3. 左側のナビゲーションツリーで、データ管理 > クロスリージョンレプリケーション を選択します。

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

  5. クロスリージョンレプリケーション パネルで、パラメーターを構成します。次の表にパラメーターを示します。

    セクション

    パラメーター

    説明

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

    [ソースバケット]

    ソースバケットのリージョンと名前が表示されます。このパラメーターを指定する必要はありません。

    ターゲットバケット

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

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

    複製するオブジェクト

    デスティネーションバケットにレプリケートするオブジェクトを選択します。

    • [ソースバケット内のすべてのオブジェクト]: OSS は、ソースバケットからデスティネーションバケットにすべてのオブジェクトをレプリケートします。

    • [指定されたプレフィックスを持つオブジェクト]: OSS は、名前に特定のプレフィックスが含まれるオブジェクトをソースバケットからデスティネーションバケットにレプリケートします。最大 10 個のプレフィックスを指定できます。

    レプリケーションポリシー

    ソースバケットからデスティネーションバケットにレプリケートする操作を選択します。有効な値:

    説明

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

    • [追加/変更] (ディザスタリカバリに適用可能): OSS は、オブジェクトの作成と更新操作のみをソースバケットからデスティネーションバケットにレプリケートします。

      重要

      このレプリケーションポリシーが適用されると、ポリシーが有効になった後にアップロードまたは更新されたオブジェクトのみがデスティネーションバケットにレプリケートされ、ソースバケットから削除されたオブジェクトはデスティネーションバケットから削除されません。このポリシーは、ソースバケットでの手動削除またはライフサイクルポリシーによってトリガーされる自動削除に起因するデスティネーションバケットでのデータ損失を効果的に防ぎます。

    • [追加/削除/変更] (複数のユーザーまたはアプリケーションが同じデータセットを共有およびアクセスする必要があるシナリオに適用可能): OSS は、オブジェクトの作成、更新、および削除操作をソースバケットからデスティネーションバケットにレプリケートします。

      重要

      新しくアップロードおよび更新されたオブジェクトのレプリケーションに加えて、このレプリケーションポリシーには削除のレプリケーションが含まれており、データの整合性が確保されます。このポリシーは、複数のユーザーまたはアプリケーションが同じデータセットを共有およびアクセスする必要があるシナリオに適用できます。手動またはライフサイクルポリシーによってソースバケットから削除されたオブジェクトは、デスティネーションバケットからも削除されます。オブジェクトは、削除されると復元できません。

    マルチパートアップロードを実行してソースバケットにオブジェクトをアップロードする場合、アップロードされた各パートはデスティネーションバケットにレプリケートされます。CompleteMultipartUpload 操作を呼び出すことによって取得される完全なオブジェクトも、デスティネーションバケットにレプリケートされます。

    詳細については、「バージョン管理でデータレプリケーションを使用する」をご参照ください。

    既存データの複製

    CRR を有効にする前にソースバケットに存在する既存データをデスティネーションバケットにレプリケートするかどうかを指定します。

    • [はい]: 既存データはデスティネーションバケットにレプリケートされます。

      重要

      既存データがレプリケートされると、ソースバケットからレプリケートされたオブジェクトが、デスティネーションバケット内の同じ名前のオブジェクトを上書きする可能性があります。データ損失を防ぐために、ソースバケットとデスティネーションバケットのバージョン管理を有効にすることをお勧めします。

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

    [KMS に基づいて暗号化されたオブジェクトをレプリケートする]

    KMS に基づいて暗号化されたオブジェクトをソースバケットからデスティネーションバケットにレプリケートするかどうかを指定します。有効な値:

    • [はい]: デスティネーションバケットまたはソースバケット内のオブジェクトに KMS ベースの暗号化が構成されている場合、オブジェクトはデスティネーションバケットにレプリケートされます。[KMS に基づいて暗号化されたオブジェクトをレプリケートする] を [はい] に設定する場合は、CMK ID パラメーターを指定する必要があります。

      説明

      HeadObject 操作を呼び出して、ソースバケット内のオブジェクトの暗号化ルールをクエリし、GetBucketEncryption 操作を呼び出して、デスティネーションバケットの暗号化ルールをクエリできます。

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

    [CMK ID]

    KMS キーの ARN を指定します。KMS キーの ARN を取得する方法の詳細については、「KMS インスタンスにキーを作成する」をご参照ください。

    RAM ロール 名前

    手順 1 で作成した RAM ロールをドロップダウンリストから選択します。

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

    トランスミッション加速 は、ソースバケットとデスティネーションバケットがそれぞれ中国本土のリージョンと中国本土以外のリージョンにある場合にのみサポートされます。

    転送アクセラレーションを有効にした場合、転送アクセラレーション料金が発生します。詳細については、「転送アクセラレーション料金」をご参照ください。

    [RTC]

    説明
    • RTC は、次のリージョンで利用できます。中国(杭州)、中国(上海)、中国(青島)、中国(北京)、中国(張家口)、中国(深圳)。

    • RTC は、次のリージョンで利用できます。米国(シリコンバレー)、米国(バージニア)。

    Replication Time Control (RTC) が有効になると、OSS は OSS にアップロードしたオブジェクトのほとんどを数秒以内にレプリケートし、オブジェクトの 99.99% を 10 分以内にレプリケートします。詳細については、「RTC」をご参照ください。RTC を有効にすると料金が発生します。詳細については、「RTC トラフィック料金」をご参照ください。

  6. [OK] をクリックします。表示されるメッセージで、有効化 をクリックします。

    • CRR ルールを構成した後、ルールを変更または削除することはできません。

    • CRR ルールを構成した後、レプリケーションタスクは 3 ~ 5 分で開始されます。レプリケーションの進行状況は、ソースバケットの クロスリージョンレプリケーション タブで確認できます。

    • CRR では、データは非同期にレプリケートされます。ソースバケットからデスティネーションバケットにデータをレプリケートするために必要な時間は、データ量によって異なります。時間は数分から数時間までさまざまです。

OSS SDK を使用する

クロスアカウント CRR は、OSS SDK for Java、OSS SDK for Python、OSS SDK for Go のみでサポートされています。

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;

public class Demo {

    public static void main(String[] args) throws Exception {
        // この例では、中国(杭州)リージョンのエンドポイントが使用されています。実際のエンドポイントを指定してください。
        String endpoint = "https://oss-cn-hangzhou.aliyuncs.com";
        // アクセスクレデンシャルをプロジェクトコードに保存しないことをお勧めします。そうしないと、アクセスクレデンシャルが漏洩し、アカウント内のすべてのリソースのセキュリティが損なわれる可能性があります。この例では、アクセスクレデンシャルは環境変数から取得されます。サンプルコードを実行する前に、環境変数を構成する必要があります。
        EnvironmentVariableCredentialsProvider credentialsProvider = CredentialsProviderFactory.newEnvironmentVariableCredentialsProvider();
        // ソースバケットの名前を指定します。例: src-bucket。
        String bucketName = "src-bucket";
        // デスティネーションバケットの名前を指定します。デスティネーションバケットとソースバケットは、異なる Alibaba Cloud アカウントに属している必要があります。
        String targetBucketName = "dest-bucket";
        // デスティネーションバケットが配置されているリージョンを指定します。デスティネーションバケットとソースバケットは、異なるリージョンに配置されている必要があります。
        String targetBucketLocation = "oss-cn-shanghai";

        // OSSClient インスタンスを作成します。
        OSS ossClient = new OSSClientBuilder().build(endpoint, credentialsProvider);

        try {
            AddBucketReplicationRequest request = new AddBucketReplicationRequest(bucketName);
            request.setTargetBucketName(targetBucketName);
            request.setTargetBucketLocation(targetBucketLocation);
            // 既存データをレプリケートするかどうかを指定します。デフォルトでは、既存データはレプリケートされます。この例では、このパラメーターは false に設定されており、既存データはレプリケートされません。
            request.setEnableHistoricalObjectReplication(false);
            // OSS がデータのレプリケートに使用する RAM ロールの名前を指定します。ロールには、ソースバケットで CRR を実行し、デスティネーションバケットでレプリケートされたオブジェクトを受信するための権限が必要です。
            request.setSyncRole("yourRole");           
            //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);
            // OSS がオブジェクトの作成と更新操作をソースバケットからデスティネーションバケットにレプリケートするように指定します。
            //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(
    # デスティネーションバケットの名前を指定します。デスティネーションバケットとソースバケットは、異なる Alibaba Cloud アカウントに属している必要があります。
    target_bucket_name='dest-bucket',
    # デスティネーションバケットが配置されているリージョンを指定します。デスティネーションバケットとソースバケットは、異なるリージョンに配置されている必要があります。
    target_bucket_location='oss-cn-shanghai',
    # OSS がデータのレプリケートに使用する RAM ロールの名前を指定します。ロールには、ソースバケットで CRR を実行し、デスティネーションバケットでレプリケートされたオブジェクトを受信するための権限が必要です。
    sync_role_name='roleNameTest',
)

# レプリケートするオブジェクトの名前に含まれるプレフィックスを指定します。プレフィックスを指定した後、名前にいずれかのプレフィックスが含まれるオブジェクトのみがデスティネーションバケットにレプリケートされます。
# prefix_list = ['prefix1', 'prefix2']
# データレプリケーションルールを構成します。
# replica_config = ReplicationRule(
     # prefix_list=prefix_list,
     # OSS がオブジェクトの作成と更新操作をソースバケットからデスティネーションバケットにレプリケートするように指定します。
     # action_list=[ReplicationRule.P],
     # デスティネーションバケットの名前を指定します。デスティネーションバケットとソースバケットは、異なる Alibaba Cloud アカウントに属している必要があります。
     # 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("invalid parameters, bucket name required")
	}

	// リージョンが指定されているかどうかを確認します。
	if len(region) == 0 {
		flag.PrintDefaults()
		log.Fatalf("invalid parameters, region required")
	}

	// デフォルトの構成を読み込み、クレデンシャルプロバイダーとリージョンを指定します。
	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("failed to put bucket replication %v", err)
	}

	// 結果を表示します。
	log.Printf("put bucket replication result:%#v\n", result)
}

ossutil を使用する

ossutil を使用してクロスアカウント CRR を実行する方法の詳細については、「replication」をご参照ください。

OSS API を使用する

ビジネスで高度なカスタマイズが必要な場合は、RESTful API 操作を直接呼び出すことができます。API 操作を直接呼び出すには、コードに署名計算を含める必要があります。詳細については、「PutBucketReplication」をご参照ください。

関連情報