[AWS] S3 다른 계정 버킷에 있는 객체 복사하기

AWS 콘솔을 접속하여 S3 버킷의 COPY 기능을 통해 같은 계정에서 동일한 리전의 S3 버킷과 또는 다른 리전의 S3 버킷에 객체를 복사할 수 있습니다.


하지만 AWS 콘솔에서 S3 버킷의 COPY 기능을 통해 다른 계정의 버킷으로는 객체를 복사할 수 없습니다.
IAM 정책 및 버킷 정책을 통해 권한을 허용하여 다른 계정의 S3 버킷에 있는 객체를 복사하는 방법을 알아봅시다.

 


기본 설정

B 계정에서 AWS CLI를 통해 A 계정의 S3 버킷에 있는 객체를 B 계정의 S3 버킷으로 복사할 수 있도록 작업을 진행해보겠습니다.

 

 

우선 각각의 계정에 S3 버킷을 생성합니다.

  • A 계정 S3 버킷

  • B 계정 S3 버킷

 

 

A 계정의 S3 버킷에는 복사하고자 하는 txt 파일을 생성하였습니다.

 


IAM 정책 추가 및 적용

B 계정의 IAM 정책을 추가하여 A 계정의 S3 버킷을 조회하거나 가져올 수 있도록 허용하고,

자신의 S3 버킷에 업로드할 수 있도록 정책을 허용합니다.

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

 

정책은 이름 설정 후 생성합니다.

 

B 계정에서 생성한 IAM 정책은 사용하고자하는 AWS CLI 계정의 정책에 추가합니다.


B 계정에서의 정책 설정을 완료하였습니다.

 

 


버킷 정책 추가

A 계정의 S3 버킷에 정책을 추가하여, B 계정에서 A 계정의 S3 버킷 객체를 가져갈 수 있도록 허용합니다.

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Sid": "DelegateS3Access",
            "Effect": "Allow",
            "Principal": {
                "AWS": "arn:aws:iam::{B Account ID}:user/{B Account IAM UserName}"
            },
            "Action": [
                "s3:ListBucket",
                "s3:GetObject"
            ],
            "Resource": [
                "arn:aws:s3:::copy-test-src-s3/*",
                "arn:aws:s3:::copy-test-src-s3"
            ]
        }
    ]
}
  • AWS 예시
    • arn:aws:iam::123412341234:user/TestUser

 

A 계정의 S3 버킷 설정을 완료하였습니다.

 


객체 복사

AWS CLI에 B 계정의 Access Keys를 등록합니다.

 

B 계정의 S3 버킷을 조회합니다.

# aws s3 ls
2023-10-17 09:18:32 copy-test-target-s3

 

A 계정의 S3 버킷을 조회할 수 있습니다. 사전에 정책을 추가해줬기 때문에 가능합니다.

# aws s3 ls s3://copy-test-src-s3
2023-10-17 09:21:40       1218 TextFile.txt

 

이제 A 계정의 S3 버킷에 있는 객체를 B 계정의 S3 버킷에 복사해보겠습니다.

# aws s3 sync s3://copy-test-src-s3 s3://copy-test-target-s3
copy: s3://copy-test-src-s3/TextFile.txt to s3://copy-test-target-s3/TextFile.txt

 

복사가 완료되었으며 AWS 콘솔을 통해서도 확인하실 수 있습니다.

 

 

 

IAM 정책 및 S3 버킷 정책을 추가하여 다른 계정 버킷에 있는 객체 복사하여 사용해보시기 바랍니다.
지금까지 S3 다른 계정 버킷에 있는 객체 복사하는 방법을 알아보는 시간이었습니다....! 끝...!

 

 

 

 

[Reference]

 

 

 

+ Recent posts