目的
レプリケーションを使わずにアカウント①のS3バケット内のオブジェクトをアカウント②のS3バケットにコピーする
アカウント①・・・移行元
アカウント②・・・移行先
手順
移行先S3バケットの設定
移行元のIAMユーザーからの書き込みを許可するバケットポリシーを作成する
[移行先S3バケット]>[アクセス許可]>[バケットポリシー]>[編集]>バケットポリシーを入力し**[保存]**をクリックする
※バケットポリシーは以下のコードを参照
{
"Version": "2012-10-17",
"Id": "test",
"Statement": [
{
"Effect": "Allow",
"Principal": {
"AWS": "【移行元のIAM UserのARN】"
},
"Action": [
"s3:PutObject",
"s3:PutObjectAcl"
],
"Resource": [
"【移行先のS3のARN】/*",
"【移行先のS3のARN】"
]
}
]
}
移行元アカウントからの書き込みを許可するACLを設定する
[移行先S3バケット]>[アクセス許可]>[オブジェクト所有者]>**[編集]をクリックし、[オブジェクト所有者を編集]**画面を開く
**[ACL有効]にチェックし、[変更の保存]**をクリックして保存する
ACLの有効化が完了したので、[移行先S3バケット]>[アクセス許可]>[アクセスコントロールリスト(ACL)]>**[編集]をクリックし、[アクセスコントロールリスト (ACL) を編集]**画面を開く
**[被付与者]に移行元S3バケットのアカウントの正規IDを入力し、[リスト]と[書き込み]にチェックを入れ[変更の保存]**をクリックして保存する
移行元S3バケットの設定
移行元からオブジェクトを取得し、移行先にアップロードすることを許可するIAMポリシーを作成する
[IAM]>[ポリシー]>[ポリシーの生成]>ポリシーを入力し**[次へ]>ポリシー名を入力し[作成]**をクリックする
※ポリシーは以下のコードを参照
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "Statement1",
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::【移行元バケット名】",
"arn:aws:s3:::【移行元バケット名】/*"
]
},
{
"Sid": "Statement2",
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:PutObject",
"s3:PutObjectAcl"
],
"Resource": [
"arn:aws:s3:::【移行先バケット名】",
"arn:aws:s3:::【移行先バケット名】/*"
]
}
]
}
作成したIAMポリシーを移行元のIAMユーザーにアタッチする
コピーの実施
移行元S3バケットを開き、コピーしたいオブジェクトにチェックを入れ、[アクション]>**[コピーする]をクリックし、[コピーする]**画面を開く
**[送信先]に移行先S3バケットを指定し、[指定されたオブジェクト]にコピーしたいオブジェクトがあることを確認したら[コピーする]**をクリックする
移行先S3バケットを確認すると、オブジェクトがコピーされていることが確認できる
事後作業
上記の作業を行っただけだと、ACLの影響で移行先S3バケットでオブジェクトのダウンロードができないため、設定したバケットのACLを無効に戻すことでダウンロードや閲覧が可能になる
※コピーまで完了したので、上記の設定は全て元に戻してOK
おわりに
おわりです