【AWS備忘】レプリケーションを使わずにS3バケットのアカウント間オブジェクト移行をする

#  目的
レプリケーションを使わずにアカウント①のS3バケット内のオブジェクトをアカウント②のS3バケットにコピーする
アカウント①・・・移行元
アカウント②・・・移行先

     
# 手順

## 移行先S3バケットの設定
### 移行元のIAMユーザーからの書き込みを許可するバケットポリシーを作成する
**[移行先S3バケット]**>**[アクセス許可]**>**[バケットポリシー]**>**[編集]**>バケットポリシーを入力し**[保存]**をクリックする
※バケットポリシーは以下のコードを参照

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3574230/11b1b688-0963-2b89-5f76-08c90589f32c.png)

     
```
{
    "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有効]**にチェックし、**[変更の保存]**をクリックして保存する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3574230/06f2d176-68a6-4856-e31c-2d21a32bbdc2.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3574230/a92df3fc-5a3c-c0c5-13c3-985c9d522aea.png)

ACLの有効化が完了したので、**[移行先S3バケット]**>**[アクセス許可]**>**[アクセスコントロールリスト(ACL)]**>**[編集]**をクリックし、**[アクセスコントロールリスト (ACL) を編集]**画面を開く
**[被付与者]**に移行元S3バケットのアカウントの正規IDを入力し、**[リスト]**と**[書き込み]**にチェックを入れ**[変更の保存]**をクリックして保存する
   
　　　
## 移行元S3バケットの設定
移行元からオブジェクトを取得し、移行先にアップロードすることを許可するIAMポリシーを作成する
**[IAM]**>**[ポリシー]**>**[ポリシーの生成]**>ポリシーを入力し**[次へ]**>ポリシー名を入力し**[作成]**をクリックする
※ポリシーは以下のコードを参照
     
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3574230/e0276ee9-ada9-b009-6798-7ebf75a59da2.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3574230/311ee2b2-6bc7-1d85-8f11-d6e68fc2f376.png)

```
{
    "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ユーザーにアタッチする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3574230/63e7b8a5-8149-4c50-0ed2-cbdf9d36ee04.png)

    
## コピーの実施
移行元S3バケットを開き、コピーしたいオブジェクトにチェックを入れ、**[アクション]**>**[コピーする]**をクリックし、**[コピーする]**画面を開く
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3574230/67371582-5593-6364-f0f4-33ca4644d3d2.png)

　　   
**[送信先]**に移行先S3バケットを指定し、**[指定されたオブジェクト]**にコピーしたいオブジェクトがあることを確認したら**[コピーする]**をクリックする
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3574230/dd351d86-df4a-2280-3318-ca7fd23952d9.png)

　　   
コピーが完了したことを確認する
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3574230/e4897648-ed93-c83a-a9c4-9d59684f5351.png)

     
移行先S3バケットを確認すると、オブジェクトがコピーされていることが確認できる
     
## 事後作業
上記の作業を行っただけだと、ACLの影響で移行先S3バケットでオブジェクトのダウンロードができないため、設定したバケットのACLを無効に戻すことでダウンロードや閲覧が可能になる
※コピーまで完了したので、上記の設定は全て元に戻してOK
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3574230/fb347662-d71d-8161-bb04-02fe8078d488.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3574230/46719603-fc74-15ed-dfd0-8d0469c705a7.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/3574230/5d2782ad-dbf2-4e19-321e-600d970d768b.png)


# おわりに
おわりです