目的

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

手順

移行先S3バケットの設定

移行元のIAMユーザーからの書き込みを許可するバケットポリシーを作成する

[移行先S3バケット]>[アクセス許可]>[バケットポリシー]>[編集]>バケットポリシーを入力し[保存]をクリックする ※バケットポリシーは以下のコードを参照

image.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

image.png

ACLの有効化が完了したので、[移行先S3バケット]>[アクセス許可]>[アクセスコントロールリスト(ACL)]>[編集]をクリックし、[アクセスコントロールリスト (ACL) を編集]画面を開く [被付与者]に移行元S3バケットのアカウントの正規IDを入力し、[リスト][書き込み]にチェックを入れ[変更の保存]をクリックして保存する

移行元S3バケットの設定

移行元からオブジェクトを取得し、移行先にアップロードすることを許可するIAMポリシーを作成する [IAM]>[ポリシー]>[ポリシーの生成]>ポリシーを入力し[次へ]>ポリシー名を入力し[作成]をクリックする ※ポリシーは以下のコードを参照

image.png image.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

コピーの実施

移行元S3バケットを開き、コピーしたいオブジェクトにチェックを入れ、[アクション]>[コピーする]をクリックし、[コピーする]画面を開く image.png

[送信先]に移行先S3バケットを指定し、[指定されたオブジェクト]にコピーしたいオブジェクトがあることを確認したら[コピーする]をクリックする image.png

コピーが完了したことを確認する image.png

移行先S3バケットを確認すると、オブジェクトがコピーされていることが確認できる

事後作業

上記の作業を行っただけだと、ACLの影響で移行先S3バケットでオブジェクトのダウンロードができないため、設定したバケットのACLを無効に戻すことでダウンロードや閲覧が可能になる ※コピーまで完了したので、上記の設定は全て元に戻してOK image.png image.png image.png

おわりに

おわりです