Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- CrossSiteScript
- DNS Resolver
- AWS Resolver
- Route53 Resolver
- S3 Interface Endpoint
- x lock s lock
- 마운트
- DXGW
- S3 private통신
- s3 sync
- bWAPP arm
- BastianHost
- Route53 Endpoint
- 리눅스
- push-gateway
- s3
- 푸시게이트웨이
- Terraform
- node pod 분리
- sessionManager
- VGW
- S3 Gateway Endpoint
- bWAPP install
- ix is lock
- 도커
- SessionManager 터널링
- S3 PrivateLink
- 다이렉트 커넥트
- ec2
- bWAPP M1
Archives
- Today
- Total
이것이 점프 투 공작소
AWS 계정간 S3 데이터 옮기기 본문
다른 AWS 계정에서 사용하는 S3 데이터를 옮겨야하는 상황이 발생했습니다.
약 5개 정도의 S3를 옮기면 되어서, 간단하게 AWS CLI를 통해 데이터를 옮기는게 좋다는 생각이 들었습니다.
AWS CLI S3 API를 활용한 데이터 이전 흐름도
오른쪽 : 계정 A (목적지 버킷)
왼쪽 : 계정 B (소스 버킷)
1. 계정 A에서 S3에 대한 정책 생성
계정A에서 목적지 버킷에 대한 GET,PUT,LIST 권한,
소스버킷에 대한 LIST, GET 권한이 존재하는 정책을 생성 후 계정 A의 사용자에게 부여합니다.
s3-migration-policy라는 정책을 생성 아래 JSON을 이용해 생성하였습니다.
아래 JSON은 해당 S3 정책에 대한 예시입니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:GetObject",
"s3:GetObjectTagging",
"s3:GetObjectVersion",
"s3:GetObjectVersionTagging"
],
"Resource": [
"arn:aws:s3:::awsexamplesourcebucket",
"arn:aws:s3:::awsexamplesourcebucket/*"
]
},
{
"Effect": "Allow",
"Action": [
"s3:ListBucket",
"s3:PutObject",
"s3:PutObjectAcl",
"s3:PutObjectTagging",
"s3:GetObjectTagging",
"s3:GetObjectVersion",
"s3:GetObjectVersionTagging"
],
"Resource": [
"arn:aws:s3:::awsexampledestinationbucket",
"arn:aws:s3:::awsexampledestinationbucket/*"
]
}
]
}
2. 계정A에서 생성한 S3 정책을 계정A의 사용자에게 연결
계정A의 사용자에게 생성한 정책을 추가합니다.
3. 계정B의 소스버킷에 정책 설정
계정B의 소스 버킷 정책에 계정A에 대한 S3정책을 추가합니다.
S3 Statement에 있는 Principal, Resource를 계정A, 목적지 버킷에 대한 정보로 수정합니다.
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "AllowForS3Access",
"Effect": "Allow",
"Principal": {"AWS": "Account A AccountID"},
"Action": [
"s3:ListBucket",
"s3:GetObject"
],
"Resource": [
"arn:aws:s3:::awsexamplesourcebucket/*",
"arn:aws:s3:::awsexamplesourcebucket"
]
}
]
}
4. S3권한 정책이 부여된 계정A의 사용자 계정으로 CLI 사용
계정A의 사용자에 대한 AccessKey를 활용하여 CLI를 설정합니다.
아래의 위치에 AWS CLI 사용을 위한 자격증명 파일이 존재합니다.
- Windows: C:\Users\username\.aws\credentials
- Mac/Linux: ~/.aws/credentials
만약 자격증명 파일이 없다면 명령어를 사용하여 추가 가능합니다.
Set-AWSCredential `
-AccessKey 사용자AccessKey `
-SecretKey 사용자SecretKey
-StoreAs 프로파일명지정
자격증명이 정상적으로 되어있다면 아래와 같은 명령어로 소스버킷의 모든 폴더와 파일을 목적지 버킷으로 옮길 수 있습니다.
aws s3 sync s3://source-s3-bucket s3://target-s3-bucket
'aws' 카테고리의 다른 글
Session Manager를 이용해 Private DB 접속하기 (1) | 2023.12.15 |
---|---|
AWS S3 Gateway Endpoint, Interface Endpoint를 이용하여Private하게 접속하기 (0) | 2023.11.04 |
AWS S3 Replication과 S3 Batch에 대해 알아보자 (0) | 2023.10.31 |
DNS존과 네임서버, AWS Resolver로 On-Prem DNS서버 질의하기 (0) | 2023.10.19 |
Direct Connect로 On-Prem, AWS VPC 연결하기 (private VIF) (0) | 2023.09.24 |