【AWS備忘】S3バケット内のオブジェクトを別アカウントのS3にコピー【バッチオペレーション】
目的
アカウント①のS3バケット内のオブジェクトをアカウント②のS3バケットにコピーする
使い道の例
アカウント①で利用していたElastiCacheサービスのバックアップファイルをアカウント①のS3からアカウント②のS3 にコピーし、アカウント②内でコピーされたバックアップファイルを用いてElastiCacheをリストアする
手順
バッチオペレーションを利用する
移行先S3バケットの設定
移行先に指定するS3バケットの[プロパティ]>[バケットのバージョニング]>[編集]からバージョニングを[有効]に変更し保存する

同バケットの[管理]>[レプリケーションルール]>[アクション]>[レプリケートされたオブジェクトの受信]をクリックする

[レプリケートされたオブジェクトの受信]画面が開くので、[ソースバケットアカウント設定]>[ソースバケットアカウントID]に移行元のAWSアカウントIDを入力し[ポリシーの生成]をクリックする

[バケットポリシーの表示]をクリックして展開し、[オブジェクト所有者を送信先バケット所有者に変更するアクセス許可を含める]を有効に変更し、[設定の適用]をクリックする
移行元S3バケットの設定
移行元に指定するS3バケットの[プロパティ]>[バケットのバージョニング]>[編集]からバージョニングを[有効]に変更し保存する



同バケットの[管理]>[レプリケーションルールを作成]をクリックする

[レプリケーションルールを作成]ページが開くので、以下のように必要事項を設定して[保存]をクリックする(記載がないものはデフォルトのままでOK)
・レプリケーションルール名:任意のルール名
・ルールスコープを選択:バケット内のすべてのオブジェクトに適用(バケット内全てをコピーしたいので)
・送信先:別のアカウントのバケットを指定する
・アカウントID:移行先アカウントのアカウントID
・バケット名:移行先S3バケットのバケット名
・オブジェクト所有者を送信先バケット所有者に変更:チェックをつける(アクセス許可を移行先アカウントに変更)
・IAMロール:既存のIAMロールから選択>新しいロールの作成

[既存のオブジェクトをレプリケートしますか?]と問われるので、[はい]を選択し[送信]をクリックする

[バッチオペレーションジョブを作成します]ページに遷移するので、以下のように設定して[保存]をクリックする
・ジョブ実行オプション:準備が出来たらジョブを自動的に実行します
・完了レポート:なし(必要ならチェックを付ける)
・IAMロール:既存のIAMロールから選択>新しいロールの作成

[ステータス]が[新規]でジョブが生成される

[ステータス]が[完了済み]になればジョブは完了となり、[失敗した合計]が0であれば成功している

移行先バケットを確認すると、移行元バケットの内容がコピーされていることが確認できる

後処理
これまでの作業完了時点でコピーは完了されているが、レプリケーションの設定は維持されてしまっているためレプリケーションの無効化を行う
移行元S3バケットで作成したレプリケーションルールを削除する


移行先S3バケットのバケットポリシーを削除し、移行元からのレプリケーションを受け付けないようにする


結果
バッチオペレーションを用いてアカウント①のS3バケット内のオブジェクトをアカウント②のS3バケットにコピーすることができました おわり