[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]
- 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
- https://velog.io/@unihit/%EA%B3%84%EC%A0%95%EA%B0%84-S3-%EB%8D%B0%EC%9D%B4%ED%84%B0-%EC%9D%B4%EC%A0%84-%EB%B0%A9%EB%B2%95
'AWS' 카테고리의 다른 글
[AWS] 리눅스 서버 CloudWatchAgent 설치하기 (0) | 2023.12.11 |
---|---|
[AWS] 윈도우 서버 CloudWatchAgent 설치하기 (0) | 2023.12.07 |
[AWS] Route 53 도메인 신규 등록하기 (0) | 2023.09.19 |
[AWS] Amazon Kinesis 알아보기 (0) | 2023.08.17 |
[AWS] EC2 Placement 알아보기 (0) | 2023.07.26 |