クロスリージョンレプリケーション (CRR) は、ソースバケットから別の Alibaba Cloud アカウント配下の異なるリージョンにある送信先バケットへ、オブジェクトを自動的かつ非同期的にコピーします。クロスアカウント CRR は、ディザスターリカバリー、隔離されたバックアップの作成、またはデータレジデンシーのコンプライアンス要件を満たすために使用できます。
クロスアカウントレプリケーションを設定するには、ソースアカウントと送信先アカウントの両方で操作が必要で、次の 3 つのステップで構成されます。
-
ソースアカウント:データレプリケーション用の RAM ロールを作成し、ソースバケットからデータを読み取るために必要な最小権限を付与します。
-
送信先アカウント:送信先バケットのバケットポリシーを変更し、ソースアカウントの RAM ロールに書き込み権限を付与します。
-
ソースアカウント:ソースアカウントに戻り、ソースバケットと送信先バケットをリンクするクロスリージョンレプリケーション (CRR) ルールを作成し、レプリケーションタスクを開始します。
ステップ 1:RAM ロールの作成と権限付与
-
RAM ロールを作成します。ロールの作成ページに移動し、Principal Type を クラウドサービス に、Principal Name を OSS に設定します。
-
RAM ロールにソースバケットへのアクセス権限を付与します。レプリケーション用にソースバケットからデータを読み取るために必要な権限のみを含んだカスタムポリシーを作成します。
-
ポリシーの作成ページで、JSON タブをクリックします。 次のポリシーをポリシーエディターに貼り付け、
src-bucketをお使いのソースバケットの名前に置き換えます。{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "oss:ReplicateList", "oss:ReplicateGet" ], "Resource": [ "acs:oss:*:*:src-bucket", "acs:oss:*:*:src-bucket/*" ] } ] } -
ポリシーを作成した後、ロール ページに移動し、作成したロールを見つけて [権限の付与] をクリックします。表示されたパネルで、プリンシパルが自動的に入力されます。ポリシーについては、前のステップで作成したカスタムポリシーを選択し、[付与の確認] をクリックします。
-
-
(オプション) RAM ロールに Key Management Service (KMS) へのアクセス権限を付与します。送信先バケットでレプリケートされたデータを KMS で暗号化する場合は、RAM ロールに KMS へのアクセス権限を付与する必要があります。
ロール ページで、作成したロールを見つけて [権限の付与] をクリックします。表示されたパネルで、プリンシパルが自動的に入力されます。[ポリシー] については、
AliyunKMSCryptoUserAccessを選択し、[付与の確認] をクリックします。 -
ロール ARN を記録しておきます。ロール ページで、作成した RAM ロールを見つけ、その 基本情報 ページに移動して、ロール ARN をコピーしてください。ARN の形式は
acs:ram::{source-account-uid}:role/{role-name}です。
ステップ 2:RAM ロールの権限付与とリソースの準備
-
RAM ロールに送信先バケットへのデータ書き込み権限を付与します。送信先アカウントで、送信先バケットのバケットポリシーを変更し、ソースアカウントの RAM ロールに書き込みアクセス権限を付与します。
-
送信先アカウントにログオンし、バケット ページに移動します。送信先バケットをクリックします。
-
左側メニューで、[アクセスコントロール] > [バケットポリシー] を選択します。
-
[GUI で追加] タブをクリックし、[レプリケート対象オブジェクトの受信] をクリックします。
-
表示されたパネルで、次のパラメータを設定します。
-
[UID と RAM ロールの取得元]:[レプリケーション用のソース RAM ロール ARN] を選択します。
-
[レプリケーション用のソース RAM ロール ARN]:ステップ 1 で記録したソースアカウントの RAM ロールの ARN を入力します。
-
[目的]:[クロスアカウントレプリケーション] を選択します。
-
-
[ポリシーの生成] をクリックし、[保存] をクリックします。
-
-
(オプション) 送信先アカウントで KMS キーを準備します。KMS で暗号化されたオブジェクトをレプリケートするには、まず送信先アカウントで KMS キーを作成する必要があります。
-
KMS コンソールにログオンし、インスタンス管理 ページに移動します。ソースバケットと同じリージョンで、KMS インスタンスを購入して有効化します。KMS インスタンスを購入する際、[アクセス管理数量] が 2 以上であることを確認してください。その他のパラメータはデフォルト設定のままにします。
説明KMS で暗号化されたオブジェクトのクロスアカウントレプリケーションは KMS に依存します。この機能をサポートするリージョンは、KMS の可用性によって制限されます。KMS をサポートするリージョンの詳細については、「ソフトウェアキー管理でサポートされるリージョンとエンドポイント」をご参照ください。
-
KMS インスタンス配下で、ソフトウェアキーを作成します。キータイプは非デフォルトキー (ソフトウェアキーを推奨) である必要があります。キーの作成後、レプリケーションルールの作成時に使用するため、[基本情報] セクションからキー ARN を記録しておきます。
-
作成したキーにキーポリシーを設定します。ポリシーを設定する際、Cross-account User には、ソースアカウントによって作成された RAM ロール ARN を指定します。これは、前の手順のロール ARN です。詳細については、「キーポリシーを設定する」をご参照ください。
デフォルトでは、この操作により、ロールに復号化 (
kms:Decrypt) やデータキー生成 (kms:GenerateDataKey) などの必要な権限が付与され、このキーを使用して送信先バケットに暗号化されたオブジェクトを作成できるようになります。コンソールウィザードには通常、必要な権限が含まれていますが、API を使用してカスタムキーポリシーを設定する場合は、これらの権限が正しく追加されていることを手動で確認する必要があります。
-
ステップ 3:クロスリージョンレプリケーションルールの作成
必要な権限を付与した後、ソースアカウントのコンソールに戻り、レプリケーションルールを作成してタスクを開始します。
-
ソースアカウントにログオンし、バケット ページに移動します。ソースバケットをクリックします。
-
左側メニューで、[データ管理] > [クロスリージョンレプリケーション] を選択します。
-
[クロスリージョンレプリケーション] をクリックします。表示されたダイアログボックスで、次のパラメータを設定します。
-
[送信先バケットの設定]:[別の Alibaba Cloud アカウントに属するバケットを指定] を選択し、送信先バケットがあるリージョンを選択して、その名前を入力します。
-
レプリケーション対象: すべてのファイルの同期 または プレフィックスを指定する を選択します。指定したプレフィックスを持つソースバケット内のオブジェクトが、宛先バケットにレプリケートされます。デフォルトでは、最大 10 個のプレフィックスを追加できます。この制限を 100 に引き上げるには、 にお問い合わせください。
-
[オブジェクトのタグ付け]:
説明このパラメータを設定するには、次の条件を満たす必要があります。
-
オブジェクトタグを設定している。
-
[削除マーカーをレプリケート] および [特定バージョンの永久削除をレプリケート] チェックボックスが選択されていない。
特定のタグを持つオブジェクトを宛先バケットにレプリケートするには、ルールの設定 チェックボックスを選択します。最大 10 個のタグ (キーと値のペア) を追加できます。タグを追加した後、次のいずれかのフィルターポリシーを選択できます:
-
[すべてのタグを含む]:そのすべてのタグがフィルター ルールで指定されたタグと一致する場合にのみ、OSS はオブジェクトを複製します。
-
[いずれかのタグを含む]: オブジェクトのタグの少なくとも 1 つがフィルター ルールで指定されたタグと一致する場合、OSS はオブジェクトをレプリケートします。
-
-
[KMS 暗号化オブジェクトをレプリケート]:ソースオブジェクトが KMS で暗号化されており、送信先でも暗号化されたままにする場合は、[レプリケート] を選択し、ステップ 2 で準備した送信先アカウントの KMS キーの ARN を入力します。[レプリケートしない] を選択すると、KMS で暗号化されたオブジェクトは送信先バケットにレプリケートされません。
説明ソースオブジェクトと送信先バケットの暗号化ステータスは、それぞれ HeadObject および GetBucketEncryption オペレーションを呼び出すことで照会できます。
-
[RAM ロール]:ドロップダウンリストから、ステップ 1 でソースアカウントで作成した RAM ロールを選択します。
-
-
[レプリケーションポリシーの設定]:
-
[削除操作をレプリケート] (このオプションは、ソースバケットでバージョン管理が無効になっている場合に表示されます):ソースバケット内のオブジェクトの削除を送信先バケットに同期するかどうかを選択します。
-
[はい]:作成、変更、削除の操作を同期し、送信先バケットをソースバケットと一致させます。このオプションは、同じデータセットを共有してアクセスする必要があるマルチユーザーまたはアプリケーション環境に適しています。ただし、このポリシーでは、ソースバケット内のオブジェクトが手動で削除されるか、ライフサイクルルールによって自動的に削除されると、送信先バケット内の対応するオブジェクトも削除され、復元できなくなります。
-
[いいえ]:新規および変更されたオブジェクトを同期します。ソースバケット内のオブジェクトの削除は、送信先バケットに影響しません。ディザスターリカバリーシナリオでは、[いいえ] を選択すると、ソースバケットでの誤削除がバックアップバケットにレプリケートされるのを防ぎ、データセキュリティが強化されます。
-
-
[履歴データをレプリケート]:ルールが有効になる前にソースバケットに存在していたデータをレプリケートするかどうかを選択します。この操作により、送信先バケット内の同じ名前のオブジェクトが上書きされます。データ損失を防ぐため、ソースバケットと送信先バケットの両方でバージョン管理を有効にすることを推奨します。
-
[削除マーカーをレプリケート] (このオプションは、ソースバケットでバージョン管理が有効になっている場合に表示されます):ソースバケットから送信先バケットへ削除マーカーをレプリケートするかどうかを選択します。
-
[レプリケート]:バージョン ID を指定せずにソースバケットからオブジェクトが削除されると、OSS はソースバケットから送信先バケットへ削除マーカーを同期します。これは、同じデータセットを共有してアクセスし、ソースバケットと送信先バケット間のデータ整合性を確保する必要があるシナリオに適しています。
重要このポリシーを設定すると、ソースバケット内のオブジェクトが手動で削除されるか、ライフサイクルルールによって自動的に削除されると、削除マーカーも送信先バケットに同期され、送信先バケットでデータにアクセスできなくなります。
-
[レプリケートしない] (ディザスターリカバリーシナリオに推奨):ソースバケットで作成された削除マーカーは、送信先バケットにレプリケートされません。これにより、ソースバケットでの誤削除やライフサイクルルールによる自動削除が原因で、送信先バケットでのデータ損失を効果的に防ぎます。
-
-
[特定バージョンの永久削除をレプリケート] (このオプションは、ソースバケットでバージョン管理が有効になっている場合に表示されます):ソースバケットから送信先バケットへ、特定のオブジェクトバージョンの永久削除をレプリケートするかどうかを選択します。
-
[レプリケート]:現行バージョンおよび非現行バージョンを含む、ソースオブジェクトの特定のバージョンを永久削除すると、OSS は送信先バケット内の対応するバージョンも永久削除します。これは、ソースバケットと送信先バケット間で完全なデータ整合性を確保する必要があるシナリオに適しています。
重要このポリシーを設定すると、ソースバケットから永久削除されたオブジェクトバージョンは、送信先バケットで復元できなくなります。このオプションは慎重に使用してください。
-
[レプリケートしない] (ディザスターリカバリーシナリオに推奨):ソースオブジェクトの特定のバージョンを永久削除しても、送信先バケット内の対応するバージョンの削除は同期されません。これにより、ソースバケットでの永久削除操作が送信先バケットのデータセキュリティに影響を与えるのを防ぎます。
-
-
-
[(オプション) レプリケーション高速化の設定]:
-
[転送高速化]:レプリケーションタスクが中国本土のリージョンと海外リージョンをまたぐ場合、この機能を有効にすることでデータ転送速度を向上させることができます。この機能を使用すると、追加の転送高速化料金が発生します。
-
[レプリケーション時間制御 (RTC)]:有効にすると、RTC はほとんどの増分データのレプリケーション遅延を 10 分以内に保ちます。この機能は特定のリージョン間でのみサポートされており、追加のクロスリージョンレプリケーション RTC 料金が発生します。詳細については、「RTC の概要」をご参照ください。
-
-
CRR ルールは、作成後に変更または削除できません。[OK] をクリックする前に、すべての設定を慎重に確認してください。レプリケーションを終了するには、レプリケーションタスクを無効にしてデータ同期を停止できます。
-
すべての設定が正しいことを確認した後、[OK] をクリックし、[有効化の確認] をクリックします。
レプリケーションタスクは、ルールの作成後数分以内に開始されます。データレプリケーションは非同期プロセスです。必要な時間は、オブジェクトのサイズ、オブジェクトの数、クロスリージョンネットワークの遅延によって異なり、数分から数時間かかる場合があります。ソースバケットの クロスリージョンレプリケーション タブで、履歴データおよび増分データの同期ステータスを含むレプリケーションの進行状況を確認できます。
よくある質問
ストレージクラスまたはアクセス時刻の変更がレプリケートされないのはなぜですか。
データレプリケーションは、オブジェクトの作成、削除、変更など、オブジェクトコンテンツの変更によってのみトリガーされます。ライフサイクルルールまたは CopyObject オペレーションによるストレージクラスの変更、および最終アクセス時刻 (LastAccessTime) の更新は、新しいオブジェクトコンテンツの書き込みを伴いません。したがって、これらのアクションは新しいレプリケーションタスクをトリガーせず、OSS は送信先バケット内のオブジェクトレプリカを更新しません。
解決策:
-
ストレージクラスの同期:送信先バケットで同一のライフサイクルルールを設定し、同じストレージクラスの移行を確保してください。
-
LastAccessTimeの更新:送信先オブジェクトの最終アクセス時刻を更新するには、送信先バケットでオブジェクトに直接アクセスし (GetObjectリクエストの実行など)、LastAccessTimeの更新をトリガーしてください。
マルチパートアップロードを使用してアップロードされたオブジェクトはレプリケートされますか。
マルチパートアップロードを使用してオブジェクトをアップロードすると、OSS はアップロードされた各パートを送信先バケットにレプリケートします。ソースバケットで CompleteMultipartUpload オペレーションが呼び出されてオブジェクトが完成すると、OSS は送信先バケットでもレプリケートされたパートを組み立てて、完全なオブジェクトを構成します。
RAM ロールの権限付与を簡略化できますか。
はい。迅速な権限付与のために、作成した RAM ロールに Alibaba Cloud が提供する AliyunOSSFullAccess システムポリシーを直接付与できます。ただし、このポリシーはアカウント配下のすべての OSS リソースに対するすべての権限を付与します。その範囲が広いため、このポリシーは本番環境には推奨されません。
権限付与に JSON ポリシーを使用できますか。
はい。送信先バケットのバケットポリシーページで、[構文でルールを追加] を選択すると、より柔軟な設定が可能になります。JSON ポリシーを使用する際は、次の点に注意してください。
-
新しいポリシーは、既存のバケットポリシーを上書きします。新しいポリシーに必要なすべての権限付与ルールが含まれていることを確認してください。
-
ポリシー内の
Principalフィールドには、ソースアカウントの RAM ロールの ARN を含める必要があります。 -
ロール名に大文字が含まれている場合、ポリシー内では小文字に変換する必要があります。たとえば、ロール
AliyunOssDrsRoleは、ポリシー内ではaliyunossdrsroleと記述する必要があります。 -
ソースアカウントの UID、送信先バケットの名前、および送信先アカウントの UID を正確に入力する必要があります。
次のコードは、ポリシーの例を示しています。
{
"Version":"1",
"Statement":[
{
"Effect":"Allow",
"Action":[
"oss:ReplicatePut",
"oss:ReplicateDelete"
],
"Principal": [
"arn:ram::{source-account-uid}:role/{role-name}"
],
"Resource":[
"acs:oss:*:{destination-account-uid}:{destination-bucket-name}",
"acs:oss:*:{destination-account-uid}:{destination-bucket-name}/*"
]
}
]
}