일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- Ngrinder Docker
- 직장인자기계발
- 패스트캠퍼스
- 환급챌린지
- 패스트캠퍼스후기
- putty Inactive
- gitlab 잔디옮기기
- redis cli
- elastic cache
- aws
- RedisJSON
- Window redis-cli
- 직장인인강
- Redis
- aws s3
- 캐시백챌린지
- 캐시백
- AWS S3 migration
- ERR unknown command 'JSON.GET'
- Avast Security
- AWS S3 계정이동
- 한 번에 끝내는 AWS 인프라 구축과 DevOps 운영 초격차 패키지 Online
- 잔디이전
- AWS S3 버킷 삭제
- ERR unknown command 'JSON.SET'
- Avast 구독취소
- 패캠챌린지
- nodemailer
- redis-cli
- vscode
- Today
- Total
Developing
AWS 다른 계정으로 S3 Data Migration 하는 방법 본문
S3 데이터를 AWS 다른계정으로 이관해야 할 일이 생겨서 관련 포스팅을 진행하고자 한다.
A -> B 계정으로 S3 이관을 진행한다고 가정할 때, 이루어지는 과정은 다음과 같다.
1. A계정 S3 Bucket Policy 변경
1-1) 기존에 Bucket Policy가 이미 설정되있는 경우
Bucket Policy에 cloudfront같은 설정이 포함되어있을 수 있다.
기존에 작성된 내용에서 "Statement"의 마지막 부분에 다음의 내용을 추가해준다.
여기서의 {B계정에 IAM 권한 설정한 사용자이름}에 관한 부분은 2~3번 내용을 먼저 참고한 뒤에 작성하면 된다!
{
"Sid": "DelegateS3Access",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::{B계정의 계정ID 띄어쓰기 없이 12자}:user/{B계정에 IAM 권한 설정한 사용자이름}"
},
"Action": [
"s3:ListBucket",
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::{A계정의 Bucket이름}/*",
"arn:aws:s3:::{A계정의 Bucket이름}"
]
}
1-2) 기존에 Bucket Policy가 설정되지 않은 경우
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "DelegateS3Access",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::{B계정의 계정ID 띄어쓰기 없이 12자}:user/{B계정에 IAM 권한 설정한 사용자이름}"
},
"Action": [
"s3:ListBucket",
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::{A계정의 Bucket이름}/*",
"arn:aws:s3:::{A계정의 Bucket이름}"
]
}
]
}
1-3) 공식문서 예제 참고용
{
"Version": "2012-10-17",
"Id": "Policy1611277539797",
"Statement": \[
{
"Sid": "Stmt1611277535086",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::222222222222:user/Jane"
},
"Action": "s3:PutObject",
"Resource": "arn:aws:s3:::destination-DOC-EXAMPLE-BUCKET/\*",
"Condition": {
"StringEquals": {
"s3:x-amz-acl": "bucket-owner-full-control"
}
}
},
{
"Sid": "Stmt1611277877767",
"Effect": "Allow",
"Principal": {
"AWS": "arn:aws:iam::222222222222:user/Jane"
},
"Action": "s3:ListBucket",
"Resource": "arn:aws:s3:::destination-DOC-EXAMPLE-BUCKET"
}
\]
}
2. B계정의 IAM 권한 설정
IAM > 정책 > 정책 생성 > JSON 항목으로 이동하여 다음의 내용을 입력한다.
2-1. 검색하여 작성한 예시
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "VisualEditor0",
"Effect": "Allow",
"Action": [
"s3:GetObject",
"s3:ListBucket"
],
"Resource": [
"arn:aws:s3:::{A계정의 Bucket이름}",
"arn:aws:s3:::{A계정의 Bucket이름}/*"
]
},
{
"Sid": "VisualEditor1",
"Effect": "Allow",
"Action": [
"s3:PutObject",
"s3:ListBucket",
"s3:PutObjectAcl"
],
"Resource": [
"arn:aws:s3:::{B계정의 복사시킬 Bucket이름}",
"arn:aws:s3:::{B계정의 복사시킬 Bucket이름}/*"
]
}
]
}
2-2.AWS 공식문서 예시
{
"Version": "2012-10-17",
"Statement": \[
{
"Effect": "Allow",
"Action": \[
"s3:ListBucket",
"s3:GetObject"
\],
"Resource": \[
"arn:aws:s3:::source-DOC-EXAMPLE-BUCKET",
"arn:aws:s3:::source-DOC-EXAMPLE-BUCKET/\*"
\]
},
{
"Effect": "Allow",
"Action": \[
"s3:ListBucket",
"s3:PutObject",
"s3:PutObjectAcl"
\],
"Resource": \[
"arn:aws:s3:::destination-DOC-EXAMPLE-BUCKET",
"arn:aws:s3:::destination-DOC-EXAMPLE-BUCKET/\*"
\]
}
\]
}
3. B계정의 사용자 설정 및 권한 설정
직접 정책 연결 선택 뒤 2번에서 생성한 권한을 연결해준다. 4번에서 곧 얘기할 AWS-CLI가 잘 접속됬는지 확인하고 싶다면 "AmazonS3FullAccess" 권한도 넣어주자.
4. 3번에서 생성해준 B계정의 사용자로 AWS-CLI 접속
aws configure
AWS ACCESS KEY ID : {파일로 내려받은 ACCESS KEY ID입력하기}
AWS Secret Access Key : {파일로 내려받은 SECRET ACCESS KEY 입력하기}
Default region name : ap-northeast-2
만약 amazons3FullAccess 권한이 부여된 상태라면 다음 명령어를 통해 B계정의 사용자로 잘 aws-cli 접속하였는지 확인하자.
aws s3 ls
B계정의 Bucket 이름이 출력되면 성공적이다.
5. Migration 명령 수행
aws s3 sync s3://{A계정 복사하려는 Bucket이름}/{기타 자신이 원하는 경로} s3://{B계정 복사시킬 Bucket이름}/{기타 자신이 원하는 경로}
Reference
https://interconnection.tistory.com/119
https://velog.io/@unihit/계정간-S3-데이터-이전-방법
https://repost.aws/ko/knowledge-center/copy-s3-objects-account
'Tips(Reference) > aws' 카테고리의 다른 글
AWS CLI S3 작업 업무 효율높이기(PS 스크립트화,pandas 활용) (1) | 2023.11.05 |
---|---|
AWS 키페어 pem->ppk , ppk->pem 파일 변경하기 (0) | 2022.06.01 |
aws cli "You must specify a region. You can also configure your region by running "aws configure" 현상 (0) | 2022.05.25 |