TECHIES WORLD

For Techs.... Techniques.... Technologies....

AWSBashLinux

How to copy S3 objects from one AWS account to another

This article explains the steps to copy S3 objects from one AWS account to another.

Step1: Login to source AWS console.

Step2: Navigate to the IAM management page.

Step3: Create a new policy.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::SOURCE-BUCKET",
                "arn:aws:s3:::SOURCE-BUCKET/*"
            ]
        },
        {
            "Effect": "Allow",
            "Action": [
                "s3:ListBucket",
                "s3:PutObject",
                "s3:PutObjectAcl"
            ],
            "Resource": [
                "arn:aws:s3:::DESTINATION-BUCKET",
                "arn:aws:s3:::DESTINATION-BUCKET/*"
            ]
        }
    ]
}

Where SOURCE-BUCKET need to be replaced with the name of the source bucket.

Step4: Attach the newly created policy to the required IAM user.

Step5: Login to destination AWS console.

Step6: Navigate to the IAM management page.

Stepy7: Create a new policy.

{
    "Version": "2012-10-17",
    "Id": "Policy1611277539797",
    "Statement": [
        {
            "Sid": "Stmt1611277535086",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::ACCOUNT-ID:user/USER"
            },
            "Action": "s3:PutObject",
            "Resource": "arn:aws:s3:::DESTINATION-BUCKET/*",
            "Condition": {
                "StringEquals": {
                    "s3:x-amz-acl": "bucket-owner-full-control"
                }
            }
        },
        {
            "Sid": "Stmt1611277877767",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::ACCOUNT-ID:user/USER"
            },
            "Action": "s3:ListBucket",
            "Resource": "arn:aws:s3:::DESTINATION-BUCKET"
        }
    ]
}

Where ACCOUNT-ID need to be replaces with the id of source AWS account, USER with the IAM user in the source AWS account and DESTINATION-BUCKET with the name of the destination bucket.

Step8: Now the objects can be copied using aws cli.

#aws s3 cp s3://SOURCE-BUCKET/OBJECT s3://DESTINATION-BUCKET/OBJECT --acl bucket-owner-full-control

Where SOURCE-BUCKET need to be replaced with the name of the source bucket, DESTINATION-BUCKET with the name of the destination bucket and OBJECT with the name of the S3 object.

That's all…