クロスアカウントの同一リージョンレプリケーションは、オブジェクトをソースバケットから、同じリージョン内にある別の Alibaba Cloud アカウントの宛先バケットへ、自動的かつ非同期 (ほぼリアルタイム) にコピーします。この機能は、障害復旧の実装、分離されたクロスアカウントバックアップの作成、またはデータレジデンシーのコンプライアンス要件を満たすのに役立ちます。
クロスアカウントの同一リージョンレプリケーションを設定するには、ソースアカウントと宛先アカウントの両方での操作が必要です。このプロセスには、主に 3 つのステップがあります。
ソースアカウント:データレプリケーション専用の RAM ロールを作成し、ソースバケットからデータを読み取るために必要な最小限の権限を付与します。
宛先アカウント:宛先バケットのバケットポリシーを変更し、ソースアカウントの RAM ロールに書き込みアクセス権を付与します。
ソースアカウント (再操作):同一リージョンレプリケーションルールを作成してソースバケットと宛先バケットをリンクし、レプリケーションタスクを開始します。
ステップ 1:RAM ロールの作成と権限付与
RAM ロールの作成:[RAM ロールの作成] ページで、[プリンシパルタイプ] に Principal Type を選択し、[プリンシパル名] に Principal Name を選択します。
RAM ロールにソースバケットへのアクセス権限を付与します。レプリケーションがソースバケットからデータを読み取り、レプリケーションタスクを開始するために必要な権限のみを含むカスタムポリシーを作成します。
[ポリシーの作成] ページで、JSON タブをクリックします。次のポリシーの内容をポリシーエディターに貼り付け、
src-bucketを実際のソースバケット名に置き換えます。{ "Version": "1", "Statement": [ { "Effect": "Allow", "Action": [ "oss:ReplicateList", "oss:ReplicateGet" ], "Resource": [ "acs:oss:*:*:src-bucket", "acs:oss:*:*:src-bucket/*" ] } ] }ポリシーを作成した後、[ロール] ページに戻ります。ロールを見つけて [権限の追加] をクリックし、表示されるパネルで [権限ポリシー] に先ほど作成したカスタムポリシーを選択して [OK] をクリックします。プリンシパルは自動的に選択されます。
KMS で暗号化されたデータをレプリケートするには、RAM ロールに KMS へのアクセス権限も付与する必要があります。
[ロール] ページで、作成したロールを見つけて [権限の追加] をクリックします。
パネルで、[権限ポリシー] に
AliyunKMSCryptoUserAccessを選択し、[OK] をクリックします。プリンシパルは自動的に選択されます。
後で使用するためにロール ARN を控えておきます。[ロール] ページで、作成した RAM ロールを見つけて、その [基本情報] ページに移動します。フォーマットは
acs:ram::{Source-Account-ID}:role/{Role-Name}です。
ステップ 2:権限の付与とリソースの準備
RAM ロールに宛先バケットへの書き込み権限を付与します。宛先アカウントで、宛先バケットのバケットポリシーを変更し、ソースアカウントの RAM ロールに書き込みアクセス権を付与します。
宛先アカウントでログインし、[バケットリスト] ページに移動して、宛先バケットをクリックします。
ナビゲーションペインで、[権限] > [バケットポリシー] を選択します。
[ビジュアルエディター] タブをクリックし、[レプリケートされたオブジェクトの受信を承認] をクリックします。
表示されるパネルで、次のパラメーターを設定します。
UID と RAM ロールの取得方法:[ソースの RAM ロール ARN から取得] を選択します。
ソース RAM ロール ARN:ステップ 1 で控えておいたソースアカウントの RAM ロール ARN を入力します。
承認目的:[クロスアカウントの同一リージョンレプリケーション] を選択します。
[ポリシーの生成] をクリックし、[保存] をクリックします。
(オプション) 宛先アカウントで KMS キーを設定します。KMS で暗号化されたオブジェクトをレプリケートする場合は、まず宛先アカウントで KMS キーを設定する必要があります。
KMS コンソールの [インスタンス管理] ページにログインし、ソースアカウントのバケットと同じリージョンで、KMS インスタンスを購入して有効化します。KMS インスタンスを購入する際は、[アクセス管理クォータ] が 2 以上であることを確認し、他のパラメーターはデフォルト設定のままにします。
説明KMS で暗号化されたオブジェクトのクロスアカウントレプリケーションは KMS に依存します。サポートされているリージョンは、KMS の可用性によって制限されます。サポートされているリージョンの詳細については、「ソフトウェアキー管理がサポートされているリージョンとエンドポイント」をご参照ください。
KMS インスタンスで、ソフトウェアキーを作成します。キータイプはデフォルト以外のキー (ソフトウェアキーを推奨します) である必要があります。キーを作成した後、後でレプリケーションルールを作成する際に使用するために、基本情報 セクションからキー ARN を控えておきます。
作成したキーにキーポリシーを設定します。キーポリシーで、ソースアカウントで作成した RAM ロール ARN を その他のアカウントユーザー として追加します。これは、前の手順で作成したロール ARN です。詳細については、「キーポリシーの設定」をご参照ください。
デフォルトでは、この操作により、Decrypt (
kms:Decrypt) や GenerateDataKey (kms:GenerateDataKey) などの必要な権限がロールに付与され、ロールがこのキーを使用して宛先バケットに暗号化オブジェクトを作成できるようになります。コンソールウィザードには必要な権限がデフォルトで含まれていますが、OpenAPI を使用してカスタムキーポリシーを設定する場合は、これらの権限が正しく追加されていることを手動で確認する必要があります。
ステップ 3:同一リージョンレプリケーションルールの作成
必要な権限を付与した後、ソースアカウントのコンソールに戻り、レプリケーションルールを作成してタスクを開始します。
ソースアカウントでログインし、[バケットリスト] ページに移動して、ソースバケットをクリックします。
ナビゲーションペインで、[データ管理] > [SRR] を選択します。
[SRR] をクリックします。表示されるダイアログボックスで、次のパラメーターを設定します。
宛先バケットの設定:[別のアカウントのバケットを指定] を選択し、宛先バケットのリージョンを選択して、バケット名を入力します。
レプリケートするオブジェクト:すべてのファイルの同期 または プレフィックスを指定する を選択します。指定されたプレフィックスを持つソースバケット内のオブジェクトが宛先バケットにレプリケートされます。デフォルトでは、最大 10 個のプレフィックスを追加できます。プレフィックスの数を増やすには、にお問い合わせください。上限を最大 100 まで増やすことができます。
[オブジェクトのタグ付け]:
説明このパラメーターを設定するには、次の条件を満たす必要があります。
オブジェクトタグを設定している。
[削除マーカーのレプリケート] および [特定バージョンの削除のレプリケート] オプションを選択していない。
ルールの設定 チェックボックスを選択すると、指定したタグを持つオブジェクトを宛先バケットにコピーできます。最大 10 個のタグ (キーと値のペア) を追加できます。タグを追加した後、次のタグフィルタリングポリシーを選択できます。
[すべてのタグを含む]:オブジェクトのすべてのタグがフィルターで指定されたタグセットに含まれている場合に、オブジェクトがレプリケートされます。
[いずれかのタグを含む]:オブジェクトのいずれかのタグがフィルターで指定されたタグセットに含まれている場合に、オブジェクトがレプリケートされます。
KMS で暗号化されたオブジェクトのレプリケート:ソースオブジェクトが KMS で暗号化されており、レプリケートされたオブジェクトも暗号化されたままにする場合は、[レプリケート] を選択し、ステップ 2 で宛先アカウントに設定した KMS キーを指定します。[レプリケートしない] を選択した場合、Object Storage Service (OSS) は KMS で暗호化されたファイルをレプリケートしません。
説明HeadObject および GetBucketEncryption API を使用して、それぞれソースオブジェクトと宛先バケットの暗号化ステータスを確認できます。
承認用のロール:ドロップダウンリストから、ステップ 1 でソースアカウントで作成した RAM ロールを選択します。
レプリケーションポリシーの設定:
削除操作のレプリケート (このオプションは、ソースバケットでバージョニングが無効になっている場合に表示されます):ソースバケットから宛先バケットへの削除操作を同期するかどうかを選択します。
はい:作成、更新、削除操作をレプリケートして、宛先バケットの状態をソースバケットと一致させます。これは、複数のユーザーやアプリケーションが同じデータセットを共有し、アクセスする必要がある環境に適しています。ただし、この設定では、手動またはライフサイクルルールによってソースバケットからオブジェクトが削除されると、OSS は宛先バケット内の対応するオブジェクトも削除し、復元できなくなります。
いいえ:新規および更新されたオブジェクトのみをレプリケートします。ソースバケットからオブジェクトを削除しても、宛先バケットには影響しません。障害復旧シナリオでは、[いいえ] を選択すると、ソースバケットからの偶発的な削除のレプリケーションが防止され、データセキュリティが向上します。
履歴データのレプリケート:レプリケーションルールを作成する前にソースバケットに存在していたオブジェクトをレプリケートするかどうかを選択します。この操作は、宛先バケット内の同じ名前のオブジェクトを上書きします。データ損失を防ぐため、ソースバケットと宛先バケットの両方でバージョニングを有効にすることを推奨します。
削除マーカーのレプリケート (このオプションは、ソースバケットでバージョニングが有効になっている場合に表示されます):ソースバケットから宛先バケットへ削除マーカーをレプリケートするかどうかを選択します。
レプリケート:バージョン ID を指定せずにソースバケットからオブジェクトが削除されると、OSS はソースバケットに作成した削除マーカーを宛先バケットにレプリケートします。これは、同じデータセットを共有およびアクセスし、ソースバケットと宛先バケット間でデータ状態の一貫性を確保する必要があるシナリオに適しています。
重要このポリシーを設定すると、手動またはライフサイクルルールによってソースバケットからオブジェクトが削除された場合、OSS は宛先バケットにも削除マーカーを作成し、宛先バケットのデータにアクセスできなくなります。
レプリケートしない (障害復旧シナリオで推奨します):OSS は、ソースバケットで作成された削除マーカーを宛先バケットにレプリケートしません。これにより、ソースバケットでの偶発的な削除やライフサイクルルールによる自動削除による宛先バケットでのデータ損失を効果的に防ぎます。
特定バージョンの削除のレプリケート (このオプションは、ソースバケットでバージョニングが有効になっている場合に表示されます):ソースバケットから特定のオブジェクトバージョンを完全に削除する操作を、宛先バケットにレプリケートするかどうかを選択します。
レプリケート:現在および以前のバージョンを含むソースオブジェクトの特定のバージョンが完全に削除されると、OSS は宛先バケット内の対応するバージョンも完全に削除します。これは、ソースと宛先のデータを完全に一致させる必要があるシナリオに適しています。
重要この設定では、ソースバケットから完全に削除されたオブジェクトバージョンを宛先バケットから復元することはできません。このオプションは注意して使用してください。
レプリケートしない (障害復旧シナリオで推奨します):ソースオブジェクトの特定のバージョンが完全に削除されても、OSS は宛先バケットの対応するバージョンを削除しません。これにより、ソースバケットでの完全な削除操作が宛先バケットのデータセキュリティに影響を与えるのを防ぎます。
オブジェクトがマルチパートアップロードを使用してソースバケットにアップロードされた場合、OSS は各パートのアップロード操作を宛先バケットにレプリケートします。OSS は、CompleteMultipartUpload 操作の後に生成される最終的なオブジェクトもレプリケートします。バージョニングが有効な場合のレプリケーションの動作の詳細については、「バージョニングが有効な場合の同一リージョンレプリケーション」をご参照ください。
説明一度作成した同一リージョンレプリケーションルールは、変更または削除できません。[OK] をクリックする前に、すべての設定を注意深く確認してください。レプリケーションを停止するには、レプリケーションタスクを無効にすることができます。
すべての設定が正しいことを確認した後、[OK] をクリックし、次に [有効化の確認] をクリックします。
同一リージョンレプリケーションルールが設定されてから 3〜5 分後にレプリケーションタスクが開始されます。レプリケーションの進行状況は、ソースバケットの 同一リージョン内のレプリケーション タブで確認できます。バケット間の同一リージョンレプリケーションは非同期 (ほぼリアルタイム) のプロセスであるため、データを宛先バケットにレプリケートするために必要な時間はデータのサイズによって異なり、通常は数分から数時間かかります。
よくある質問
バケット権限に JSON ポリシーを使用できますか?
はい。宛先バケットのバケットポリシーページで [構文によるポリシーの追加] を選択すると、より柔軟な設定が可能です。JSON ポリシーを使用する際は、次の点に注意してください。
新しいポリシーは、既存のバケットポリシーを上書きします。新しいポリシーに必要なすべての承認ルールが含まれていることを確認してください。
ポリシーの
Principalフィールドを、ソースアカウントの RAM ロールの ARN に設定します。ロール名に大文字が含まれている場合は、ポリシー内で小文字に変換する必要があります。たとえば、
AliyunOssDrsRoleという名前のロールは、ポリシー内でaliyunossdrsroleと記述する必要があります。ソースアカウントと宛先アカウントの UID、および宛先バケットの名前を正確に指定する必要があります。
以下はポリシーの例です。
{
"Version":"1",
"Statement":[
{
"Effect":"Allow",
"Action":[
"oss:ReplicateList",
"oss:ReplicateGet",
"oss:ReplicatePut",
"oss:ReplicateDelete"
],
"Principal": {
"RAM": [
"acs:ram::{Source-Account-ID}:role/{role-name}"
]
},
"Resource":[
"acs:oss:*:{Destination-Account-ID}:{Destination-Bucket-Name}",
"acs:oss:*:{Destination-Account-ID}:{Destination-Bucket-Name}/*"
]
}
]
}