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

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

最終更新日:Jul 08, 2026

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

前提条件

  • ソースバケットとして機能する特定のリージョンにバケット (バケット A) を作成済みであること。アカウント 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 で暗号化されたオブジェクトのレプリケート

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

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

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

AliyunOSSRole

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

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

    AliyunOSSRole を選択した場合、AliyunOSSFullAccess (Object Storage Service の管理用) および AliyunKMSCryptoUserAccess (Key Management Service の管理用) ポリシーが自動的にロールにアタッチされます。

    警告

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

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

    AliyunOSSRole を選択した場合、AliyunOSSFullAccess ポリシー (Object Storage Service の管理用) が自動的にロールにアタッチされます。

    警告

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

カスタムロール

クロスリージョンレプリケーションルールを作成する際に、カスタムロールを使用してレプリケーションタスクを完了できます。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 まで制限を増やしてください。

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

    説明

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

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

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

    ルールの設定 チェックボックスを選択して、特定のタグを持つオブジェクトをデスティネーションバケットにレプリケートします。最大 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 操作によって引き起こされるソースバケット内のオブジェクトのストレージクラスの変更は、デスティネーションバケットに同期されません。さらに、ソースバケット内のオブジェクトの最終アクセス時間 (x-oss-last-access-time) 属性は同期されません。

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

      重要

      このポリシーでは、ソースバケットから完全に削除されたオブジェクトバージョンは、デスティネーションバケットから回復することはできません。このオプションは慎重に選択してください。

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

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

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

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

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

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

    [Replication Time Control (RTC)]

    説明

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

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

    履歴データのレプリケーションを含まないタスクの場合、RTC (Replication Time Control) は有効化後 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',
    # 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,
     # データレプリケーションに使用されるデータ転送リンクを指定します。
     # 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」をご参照ください。

関連トピック