アカウント間のインスタンス同期機能を使用すると、あるアカウントのインスタンスから別のアカウントのインスタンスにイメージをレプリケーションできます。この機能は手動同期と自動同期の両方をサポートしており、リージョンに固有のものではありません。
適用範囲
ソースインスタンスは Premium Edition インスタンスである必要があります。宛先インスタンスは Basicまたは Premium Edition インスタンスを使用できます。
Container Registry コンソールで、Enterprise インスタンスカードの右下隅にある [アップグレード] をクリックします。
Finance Cloud や Alibaba Gov Cloud などの非パブリッククラウドリージョンへの、パブリッククラウドリージョンからのイメージレプリケーションはサポートされていません。
一部のリージョンでは、カスタム同期リンクのみがサポートされています。これは、Object Storage Service (OSS) バケットへのパブリックネットワークアクセスがないなどの特別な制限があるためです。
背景情報
異なる Alibaba Cloud アカウント、異なる Resource Access Management (RAM) ユーザー、または Alibaba Cloud アカウントと RAM ユーザーに属するインスタンス間でイメージをレプリケーションできます。
アカウント間のインスタンスの自動同期
同期ルールを設定することで、異なるアカウントに属するインスタンス間でイメージを自動的にレプリケーションできます。ルールを設定すると、ソースインスタンスにアップロードされたイメージは、自動的に宛先インスタンスにレプリケーションされます。このトピックでは、ソースインスタンスがアカウント A に属し、宛先インスタンスがアカウント B に属する例を説明します。
アカウント間の自動レプリケーションは、同期ルールの作成後にアップロードされ、ルールに一致するイメージにのみ適用されます。既存のイメージはレプリケーションされません。
既存のイメージをレプリケーションするには、2 つのソリューションがあります。
既存のイメージが少ない場合は、手動でレプリケーションできます。詳細については、「アカウント間のイメージの手動レプリケーション」および「CreateRepoSyncTask」をご参照ください。
既存のイメージが多い場合は、OSS レプリケーション + ACR イメージインポートソリューションを使用できます。
ソースインスタンスの OSS バケットから宛先 ACR インスタンスの OSS バケットにすべてのファイルをコピーします。詳細については、「データレプリケーション」をご参照ください。
インポートルールを作成し、移行元を OSS バケットに設定してから、イメージインポートタスクを開始してイメージを移行します。
事前準備
アカウント間でイメージを自動的にレプリケーションする前に、次の情報を取得する必要があります。
アカウント A とアカウント B の UID。
説明RAM ユーザーを使用する場合は、その RAM ユーザーが属する Alibaba Cloud アカウントの UID を取得してください。
宛先インスタンスのリージョンと ID。
Container Registry コンソールにログインします。[インスタンス] ページの上部でリージョンを選択し、対象の Enterprise インスタンスをクリックします。[概要] ページで、インスタンスの [リージョン] を表示し、[インスタンス情報] セクションで [インスタンス ID] を確認できます。
アカウント間のイメージの自動レプリケーションは、名前空間レベルとリポジトリレベルでサポートされています。
名前空間レベルで同期するには、ソースインスタンスと宛先インスタンスに同じ名前の名前空間が必要です。また、宛先インスタンスの名前空間でリポジトリの自動作成を有効にする必要があります。リポジトリの自動作成を有効にする方法の詳細については、「名前空間の作成」をご参照ください。
リポジトリレベルで同期するには、ソースインスタンスと宛先インスタンスに同じ名前のイメージリポジトリと名前空間が必要です。
ステップ 1:アカウント B からアカウント A への権限付与
アカウント B でログインし、アカウント A に権限を付与します。これにより、アカウント A はアカウント B に属するインスタンスにイメージを同期できるようになります。
aliyuncontainerregistrycrossaccoutsyncrole という名前の RAM ロールを作成します。
説明ロール名は aliyuncontainerregistrycrossaccoutsyncrole である必要があります。
アカウント B で Resource Access Management (RAM) コンソールにログインします。
左側のナビゲーションウィンドウで、 を選択します。表示されたページで、[ロールの作成] をクリックします。
[ロールの作成] ページで、[プリンシパルタイプ] パラメーターを [クラウドアカウント] に設定し、Alibaba Cloud アカウントを指定してから、[OK] をクリックします。
表示されるダイアログボックスで、ロール名として aliyuncontainerregistrycrossaccoutsyncrole を入力し、[OK] をクリックします。
アクセスポリシーを作成します。
RAM コンソールの左側のナビゲーションウィンドウで、 を選択し、[ポリシーの作成] をクリックします。
[ポリシーの作成] ページで、[JSON] タブをクリックします。必要に応じて、次のポリシー内容の
Resourceフィールドの値を置き換えます。次に、変更した内容をポリシーエディターにコピーし、[次へ: 基本情報の編集] をクリックします。[ポリシーの作成] ダイアログボックスで、[ポリシー名] と [説明] を入力します。説明Resource:権限を付与するリソースを指定します。次のフォーマットを使用します:
acs:cr:<アカウント B の宛先インスタンスのリージョン>:<アカウント B の UID>:instance/<アカウント B の宛先インスタンスの ID>。アカウント B が RAM ユーザーの場合、
Resourceフィールドのアカウント B の UIDパラメーターには、その RAM ユーザーが属する Alibaba Cloud アカウントの UID を入力します。{ "Statement": [ { "Effect": "Allow", "Action": [ "cr:CreateSyncRule", "cr:CreateRepositorySync" ], "Resource": "acs:cr:cn-beijing:151356101970****:instance/cri-4im1o411ls8g****" }, { "Effect": "Allow", "Action": [ "cr:CreateSyncRule", "cr:CreateRepositorySync" ], "Resource": "acs:cr:cn-hangzhou:151356101970****:instance/cri-4im1o411ls8gxr****" } ], "Version": "1" }
アクセスポリシーを aliyuncontainerregistrycrossaccoutsyncrole ロールにアタッチします。
[ポリシー] ページで、作成したポリシーを見つけてその名前をクリックします。
[参照] タブをクリックし、[権限の追加] をクリックします。
[権限の追加] パネルで、[権限付与の範囲] を [アカウントレベル] に、[プリンシパル] を aliyuncontainerregistrycrossaccoutsyncrole に設定し、[OK] をクリックします。
[閉じる] をクリックします。
aliyuncontainerregistrycrossaccoutsyncrole ロールの信頼ポリシーを変更します。
RAM コンソールの左側のナビゲーションウィンドウで、 を選択します。
[ロール] ページで、aliyuncontainerregistrycrossaccoutsyncrole を見つけてクリックします。
[信頼ポリシー] タブをクリックし、[信頼ポリシーの編集] をクリックします。
必要に応じてポリシー内容の
Serviceフィールドの値を置き換え、変更した内容をエディターにコピーしてから、[信頼ポリシーの保存] をクリックします。説明Service:ロールを偽装できるプリンシパルを指定します。次のフォーマットを使用します:
<アカウント A の UID>@cr.aliyuncs.com。アカウント A が RAM ユーザーの場合、
Serviceフィールドのアカウント A の UIDパラメーターには、その RAM ユーザーが属する Alibaba Cloud アカウントの UID を入力します。{ "Statement": [ { "Action": "sts:AssumeRole", "Effect": "Allow", "Principal": { "Service": [ "125287961064****@cr.aliyuncs.com" ] } } ], "Version": "1" }
ステップ 2:アカウント A での同期ルールの作成
アカウント A で Container Registry コンソールにログインします。
上部のナビゲーションバーで、リージョンを選択します。
左側のナビゲーションウィンドウで、[インスタンス] をクリックします。
[インスタンス] ページで、管理する Enterprise Edition インスタンスをクリックします。
Enterprise Edition インスタンスの管理ページの左側のナビゲーションウィンドウで、 に移動します。表示されたページで、[ルールの作成] をクリックします。
[ルールの作成] ダイアログボックスの [インスタンス情報] ステップで、必須パラメーターを設定し、[次へ] をクリックします。
パラメーター
説明
ルール名
同期ルールの名前を入力します。
同期シナリオ
[同期シナリオ] を [クロスアカウント] に設定します。
宛先 UID
宛先インスタンスが属するアカウントの UID を入力します。
宛先インスタンス
宛先インスタンスのリージョンを選択し、インスタンス ID を入力します。
[同期情報] ステップで、[同期レベル] を名前空間またはリポジトリのいずれかに設定します。次に、目的の名前空間またはリポジトリを選択し、イメージバージョンのフィルタリングルールを設定して、[同期ルールの作成] をクリックします。
Enterprise インスタンスの管理ページで、 を選択します。[同期レコード] ページで、同期タスクのステータスが [成功] になります。イメージは宛先インスタンスでも利用可能です。これは、アカウント間のインスタンスの自動同期が成功したことを示します。
アカウント間のイメージの手動レプリケーション
ソースインスタンスから、別のアカウントに属する宛先インスタンスにイメージを手動でプッシュできます。このトピックでは、ソースインスタンスがアカウント A に属し、宛先インスタンスがアカウント B に属する例を説明します。
アカウント A とアカウント B の UID、および宛先インスタンスのリージョンと ID を取得します。詳細については、このトピックの「事前準備」セクションをご参照ください。
アカウント B でログインし、アカウント A に権限を付与します。これにより、アカウント A はアカウント B に属するインスタンスにイメージを同期できるようになります。詳細については、このトピックの「ステップ 1」をご参照ください。
Container Registry コンソールにログインします。
上部のナビゲーションバーで、リージョンを選択します。
左側のナビゲーションウィンドウで、[インスタンス] をクリックします。
[インスタンス] ページで、管理する Enterprise Edition インスタンスをクリックします。
Enterprise Edition インスタンスの管理ページの左側のナビゲーションウィンドウで、 を選択します。
[イメージリポジトリ] ページで、対象のイメージリポジトリの名前をクリックします。
リポジトリの詳細ページで、左側のナビゲーションウィンドウの [イメージバージョン] をクリックします。対象のイメージを見つけ、[操作] 列の [同期] をクリックします。
[イメージ同期] ダイアログボックスで、[同期シナリオ] を [アカウント間] に設定します。宛先アカウントの UID、宛先インスタンスの ID、宛先の名前空間、宛先のリポジトリ名、およびイメージバージョンを入力します。次に、[OK] をクリックします。
Enterprise インスタンスの管理ページで、 を選択します。[同期レコード] ページで、同期タスクのステータスが [成功] になり、イメージは宛先インスタンスで利用可能です。これは、アカウント間のインスタンスの手動同期が成功したことを示します。
関連ドキュメント
同じアカウント内の他のリージョンにイメージを同期するには、「同一アカウント内でのイメージ同期」をご参照ください。この操作にはアカウントの権限付与は必要ありません。