[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 |