クロスアカウント同一リージョンレプリケーション(SRR)は、同一リージョン内にありながらも異なる Alibaba Cloud アカウント(root ユーザー)に属するソースバケットから宛先バケットへ、オブジェクトを自動的かつ非同期(ニアリアルタイム)でレプリケートします。この機能により、ディザスタリカバリの実装、隔離されたクロスアカウントバックアップの作成、またはデータ所在要件(Data Residency)へのコンプライアンス対応が可能になります。
クロスアカウント SRR の設定には、ソースアカウントおよび宛先アカウントの両方で実行する必要がある 3 つのステップがあります。
ソースアカウント:データレプリケーション専用の RAM ロールを作成し、ソースバケットからデータを読み取るための最小限の権限を付与します。
宛先アカウント:宛先バケットポリシーを変更して、ソースアカウントで作成した RAM ロールが当該バケットへデータを書き込めるように許可します。
ソースアカウントに戻ります:ソースバケットと宛先バケットを関連付ける SRR ルールを作成し、レプリケーションタスクを開始します。
ステップ 1:RAM ロールの作成と権限付与
RAM ロールを作成します。RAM ロールの作成ページへ移動します。「プリンシパルタイプ」で「クラウドサービス」を選択し、「プリンシパル名」で「OSS」を選択します。
RAM ロールにソースバケットへのアクセス権限を付与します。ソースバケットからデータを読み取り、レプリケーションタスクを開始するために必要な最小限の権限のみを含むカスタムポリシーを作成します。
ポリシーの作成ページで、スクリプト タブをクリックします。以下のポリシー内容をポリシー編集画面に貼り付け、
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を選択し、「権限付与の確認」をクリックします。
ロール ARN を記録します。ロールページで、作成済みの RAM ロールを見つけ、「基本情報」ページへ移動し、ロールの ARN をコピーして後続の手順で使用します。ARN の形式は次のとおりです:
acs:ram::{ソースアカウント ID}:role/{ロール名}。
ステップ 2:RAM ロールの権限付与とリソースの準備
宛先アカウントで、宛先バケットポリシーを変更し、ソースアカウントの RAM ロールが当該バケットへデータを書き込めるように許可します。
宛先アカウントで、バケットページへ移動し、宛先バケットをクリックします。
左側ナビゲーションウィンドウで、権限管理 > バケットポリシー を選択します。
GUI による追加 タブをクリックし、「レプリケート対象のオブジェクトの受信」をクリックします。
表示されるパネルで、以下のパラメーターを設定します。
UID および RAM ロールの取得元:「レプリケーション用ソース RAM ロール ARN」を選択します。
レプリケーション用ソース RAM ロール ARN:ステップ 1 で記録したソースアカウントの RAM ロール ARN を入力します。
目的:「クロスアカウントレプリケーション」を選択します。
ポリシーの生成 をクリックし、「保存」をクリックします。
(任意)KMS 暗号化済みオブジェクトをレプリケートする場合に必須のステップです。
KMS コンソールにログインし、インスタンスページへ移動します。ソースバケットと同じリージョンで、KMS インスタンスの購入および有効化を行います。KMS インスタンスの購入時に、「アクセス管理数量」を 2 以上に設定し、その他のパラメーターはデフォルト設定のままにします。
説明KMS 暗号化済みオブジェクトのクロスアカウントレプリケーションは KMS に依存しており、対応リージョンは KMS の可用性によって制限されます。KMS 対応リージョンの詳細については、「ソフトウェア鍵管理の対応リージョンおよびエンドポイント」をご参照ください。
KMS インスタンス内で、ソフトウェアキーの作成を行います。キーの種類はデフォルトキー以外のもの(推奨:ソフトウェアキー)である必要があります。キーを作成後、基本情報セクションからキーの ARN を記録し、後続のレプリケーションルール作成時で使用します。
作成したキーに対してキー ポリシーを設定します。キー ポリシーを設定する際は、ソースアカウントの RAM ロール ARN を [クロスアカウントユーザー] として追加し、前のステップ で作成したロール ARN を指定します。詳細な手順については、「キー ポリシーの設定」をご参照ください。
デフォルトでは、この操作により、復号(
kms:Decrypt)やデータキー生成(kms:GenerateDataKey)などの必要な権限が付与されます。これにより、ロールは当該キーを使用して宛先バケット内に暗号化済みオブジェクトを作成できます。コンソールのウィザードで構成した場合、通常は必要な権限がデフォルトで含まれますが、OpenAPI を使用してカスタムキーポリシーを設定する場合は、これらの権限が正しく追加されているかを手動で確認する必要があります。
ステップ 3:SRR ルールの作成
権限付与が完了したら、ソースアカウントのコンソールに戻り、レプリケーションルールを作成してタスクを開始します。
ソースアカウントで、バケットページへ移動し、ソースバケットをクリックします。
左側ナビゲーションウィンドウで、Data Management > SRR を選択します。
SRR をクリックします。表示されるダイアログボックスで、以下のパラメーターを設定します。
宛先バケットの設定:「別の Alibaba Cloud アカウントに属するバケットを指定」を選択し、宛先バケットのリージョンを選択してその名前を入力します。
レプリケーションポリシーの設定:
レプリケート対象のオブジェクト:「すべてのファイルの同期」または「指定プレフィックスを持つオブジェクト」を選択します。ソースバケット内の指定プレフィックスに一致するオブジェクトが宛先バケットへレプリケートされます。デフォルトでは最大 10 個のプレフィックスを追加できます。上限を 100 まで増やす場合は、へ調整依頼のチケットを作成してください。
オブジェクトタグ付け:
説明このパラメーターを設定するには、以下の条件を満たす必要があります。
オブジェクトに既にタグが設定されていること。
「削除マーカーのレプリケート」および「削除操作のレプリケート」のいずれも選択されていないこと。
「ルールの設定」チェックボックスを選択すると、特定のタグを持つオブジェクトを宛先バケットへレプリケートできます。最大 10 個のタグ(キーと値のペア)を追加できます。タグを追加後、以下のいずれかのタグフィルタリングポリシーを選択できます。
すべてのタグを含む:フィルタリングルールで定義されたすべてのタグがオブジェクトに存在する場合のみ、オブジェクトがレプリケートされます。
いずれか 1 つのタグを含む:フィルタリングルールで定義されたタグのうち、少なくとも 1 つがオブジェクトに存在する場合に、オブジェクトがレプリケートされます。
説明タグフィルタリングは、現在以下のリージョンではサポートされていません:中国 (張家口)、中国 (中衛)、メキシコ。
削除操作のレプリケート:ソースバケットからのオブジェクト削除を宛先バケットへレプリケートするかどうかを選択します。ディザスタリカバリのユースケースでは、ソースバケットでの誤削除がバックアップバケットへ反映されないようにするため、「いいえ」を選択することを推奨します。これにより、データセキュリティが強化されます。
説明データレプリケーションルールが作成された後、ライフサイクルルールまたは CopyObject 操作によって引き起こされたオブジェクトのストレージクラスの変更、およびソースバケット内のオブジェクトの最終アクセス時刻属性(x-oss-last-access-time)の変更は、宛先バケットへレプリケートされません。
いいえ:新規および更新済みのオブジェクトのみをレプリケートします。ソースバケットでオブジェクトを削除しても、宛先バケットには影響しません。これにより、ソースバケットにおける手動またはライフサイクルルールによる自動削除によって宛先バケットでデータ損失が発生するのを防ぎます。
説明ソースバケットでバージョン管理が有効になっている場合、バージョン ID を指定せずにオブジェクトを削除すると、ソースバケットに削除マーカーが作成されます。OSS はこの削除マーカーを宛先バケットへレプリケートします。
はい:作成、更新、削除の各操作をレプリケートし、宛先バケットをソースバケットと整合させるようにします。これは、複数のユーザーまたはアプリケーションが同一データセットを共有・アクセスする環境に適しています。ただし、このポリシーでは、ソースバケットから手動またはライフサイクルルールによってオブジェクトが削除された場合、宛先バケット内の対応するオブジェクトも削除され、回復できません。
オブジェクトがマルチパートアップロードでソースバケットへアップロードされた場合、各パートのアップロードが宛先バケットへレプリケートされます。CompleteMultipartUpload 操作がすべてのパートに対して呼び出された後に作成されるオブジェクトも、宛先バケットへレプリケートされます。バージョン管理付き SRR のレプリケーション動作の詳細については、「バージョン管理付き SRR」をご参照ください。
既存データのレプリケート:ルールが有効になる前にソースバケットにすでに存在していたオブジェクトをレプリケートするかどうかを選択します。この操作により、宛先バケット内の同名オブジェクトが上書きされます。データ損失を防ぐため、ソースおよび宛先の両方のバケットでバージョン管理を有効化することを推奨します。
KMS 暗号化済みオブジェクトのレプリケート:ソースオブジェクトが KMS で暗号化されており、宛先でも暗号化状態を維持したい場合は、「はい」を選択し、ステップ 2 で準備した宛先 KMS キーを指定します。「いいえ」を選択した場合、KMS 暗号化済みオブジェクトは宛先バケットへレプリケートされません。
説明ソースオブジェクトの暗号化ステータスは HeadObject 操作、宛先バケットの暗号化ステータスは GetBucketEncryption 操作で照会できます。
RAM ロール:ドロップダウンリストから、ステップ 1 でソースアカウントに作成した RAM ロール を選択します。
説明SRR ルールは作成後に変更または削除できません。[OK] をクリックする前に、すべての設定を慎重に確認してください。レプリケーションを終了するには、レプリケーションタスクを無効化してデータ同期を停止します。
すべての設定が正しいことを確認後、「OK」をクリックし、次に「確認」をクリックします。
SRR ルールの設定後、レプリケーションタスクは 3~5 分以内に開始します。ソースバケットの SRR タブでレプリケーションの進行状況をモニターできます。SRR は非同期(ニアリアルタイム)であるため、宛先バケットへのデータレプリケーションにかかる時間はデータサイズに依存し、通常は数分から数時間程度です。
よくある質問
JSON ポリシーによる権限設定
はい。宛先バケットのバケットポリシーページでは、「構文による追加」を選択することで、より柔軟な設定が可能です。JSON ポリシーを使用する際は、以下の点にご注意ください。
新しいポリシーは、既存のバケットポリシーを上書きします。新しいポリシーには、すべての必要な権限付与ルールが含まれていることを確認してください。
ポリシー内の
Principalフィールドには、ソースアカウントの RAM ロール ARN を設定する必要があります。ロール名に大文字が含まれる場合、ポリシー内では小文字に変換する必要があります。たとえば、ロール
AliyunOssDrsRoleは、aliyunossdrsroleと記述する必要があります。ソースアカウントの UID、宛先バケット名、宛先アカウントの UID を正確に指定する必要があります。
以下にポリシーの例を示します。
{
"Version":"1",
"Statement":[
{
"Effect":"Allow",
"Action":[
"oss:ReplicateList",
"oss:ReplicateGet",
"oss:ReplicatePut",
"oss:ReplicateDelete"
],
"Principal": [
"arn:sts::{ソースアカウント UID}:assumed-role/{ロール名}/*"
],
"Resource":[
"acs:oss:*:{宛先アカウント UID}:{宛先バケット名}",
"acs:oss:*:{宛先アカウント UID}:{宛先バケット名}/*"
]
}
]
}