초보 개발자

AWS 다른 계정의 S3로 데이터 복사 본문

AWS

AWS 다른 계정의 S3로 데이터 복사

taehyeki 2023. 5. 17. 09:47

AWS 아키텍처

위의 아키텍쳐는 AWS 공식 사이트에서 제공하는 이미지이다.

 

준비물

먼저 필요한 것은 다음과 같다.

1. S3

2. IAM

3. CLI

 

과정

앞으로 Source Account는 복사되는, Destination Account는 복사하는 으로 설명하겠다.

 

먼저 복사되는 S3버켓에 복사하는 계정이 버켓, 버켓안에 있는 객체를 읽을 수 있는 Policy를 생성하여 부착하자.

Create a bucket policy to allow a user in the destination account to list the source bucket’s contents and read the source bucket’s objects. Attach the bucket policy to the source bucket.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "DelegateS3Access",
            "Effect": "Allow",
            "Principal": {"AWS": "arn:aws:iam::<destination_account>:role/<RoleName>"},
            "Action": ["s3:ListBucket","s3:GetObject"],
            "Resource": [
                "arn:aws:s3:::awsexamplesourcebucket/*",
                "arn:aws:s3:::awsexamplesourcebucket"
            ]
        }
    ]
}

 

그 다음, 복사하는 계정에 , 복사되는 계정의 S3버켓을 읽고, 그 안의 객체 또한 가져올 수 있는 권한을 부여하고, 또 자신의 S3버켓에 객체를 업로드할 수 있는 Policy를 생성 후 부착하자.

Create an IAM policy in the destination account. Configure the policy to allow a user in the destination account to list contents and get objects in the source bucket, and to list contents, put objects, and set objectACLs in the destination bucket. Attach the policy to the user.

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

 

마지막으로copy 및sync 명령을 실행하여 원본 S3 버킷에서 대상 S3 버킷으로 데이터를 전송합니다. ( 복사하는 IAM 유저에서 진행 )

 

Run the aws s3 sync command as a user in the destination account. Specify the source and destination buckets to copy the data.

COPY

aws s3 cp s3:// DOC-EXAMPLE-BUCKET-SOURCE / \
       s3:// DOC-EXAMPLE-BUCKET-TARGET / \
      --recursive --source-region SOURCE-REGION-NAME --region DESTINATION-REGION-NAME
SYNC

aws s3 sync s3:// DOC-EXAMPLE-BUCKET-SOURCE / \
s3:// DOC-EXAMPLE-BUCKET-TARGET / \
--source-region SOURCE-REGION-NAME --region DESTINATION-REGION-NAME

 

 

참고:

https://docs.aws.amazon.com/ko_kr/prescriptive-guidance/latest/patterns/copy-data-from-an-s3-bucket-to-another-account-and-region-by-using-the-aws-cli.html

 

AWS CLI를 사용하여 S3 버킷에서 다른 계정 및 지역으로 데이터를 복사합니다. - AWS Prescriptive Guidance

이 페이지에 작업이 필요하다는 점을 알려 주셔서 감사합니다. 실망시켜 드려 죄송합니다. 잠깐 시간을 내어 설명서를 향상시킬 수 있는 방법에 대해 말씀해 주십시오.

docs.aws.amazon.com