DevOps

[우당탕탕 AWS] S3 데이터 복사 (계정 간 이전) (4)

ooin 2024. 7. 12. 20:41
반응형

S3 를 생성한 이후에는 기존에 업로드해두었던 데이터를 이전해야했습니다.

 

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

 

계정간 S3 데이터 이전 방법

이번 글에서는 계정간에 S3 데이터를 복사하는 방법에 대해서 알아보도록 하겠습니다.

velog.io

 

 

위 블로그 글을 참고하여 작성하였습니다.

내용이 잘 정리되어 있으니, 제가 작성하는 내용에서 이해가 되지않는 부분이 있다면 참고해도 좋을것 같습니다.


 

기존 EC2, RDS 는 A의 스냅샷을 B 계정에 권한을 주고, 해당 스냅샷을 B 계정에서 인스턴스화 했다면, S3의 경우에는 아래 그림과 같이  복사/붙여넣기 와 같이 데이터를 Copy 해오는 개념입니다.

S3 데이터 이전

 

B 계정에 S3 버킷 생성

Amazon S3 대시보드

 

 

퍼블릭 액세스 차단은 위와 같이 설정

 

B 계정에 IAM 정책을 생성

AWS IAM -> 정책

 

정책 생성 클릭

 

가져오려는 버킷 주소에는 A 계정의 S3 버킷주소를, 데이터를 받는 버킷 주소에는 B 계정의 S3 버킷주소를 입력합니다.

 

 

B 계정의 IAM > 사용자 > 권한 추가 (IAM 계정이 없다면 생성)

IAM > 사용자

 

 

기존에 사용하던 dev1 에 생성한 정책을 추가해주었습니다.

 

 

A 의 S3 버킷 정책 수정

A 계정 S3의 데이터를 복사하기 위해 버킷의 정책을 아래와 같이 수정해줍니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DelegateS3Access",
      "Effect": "Allow",
      "Principal": {
        "AWS": "B 계정"
      },
      "Action": [
        "s3:ListBucket",
        "s3:GetObject"
      ],
      "Resource": [
        "arn:aws:s3:::B 계정 버킷 주소/*",
        "arn:aws:s3:::B 계정 버킷 주소"
      ]
    }
  ]
}

 

 

AWS CLI 를 통한 Object Copy

 

B 계정에서 AWS CLI 를 통해 A 계정의 데이터를 복사합니다.

 

//ls 를 통해 B 계정에서 A 계정의 S3가 조회되는지 확인
$ aws s3 ls s3://A 계정의 S3 주소

// A의 S3 를 싱크
$ aws s3 sync s3://A 계정의 S3 주소 s3://B 계정의 S3 주소

 

 

반응형