본문 바로가기

⭐ AWS/S3

타계정의 S3 데이터를 복사하는 방법

# 계정 A : 복사할 파일의 출발지

# 계정 B : 복사된 파일의 목적지

계정B에서 S3 Bucket권한을 갖은 IAM 객체를 만들어 해당 키값을 이용하고, 복사할 객체를 가지고 있는

계정A의 Bucket Policy를 수정한 후 계정B의 IAM 객체의 키 값을 이용하여 AWS CLI를 통해 S3 복사하기를 합니다. 

# 테스트 구성

- IAM > 정책생성을 클릭하여 아래의 화면으로 이동 후 정책을 넣어줍니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket",
        "s3:GetObject"
      ],
      "Resource": [
        "arn:aws:s3:::Source-Bucket",
        "arn:aws:s3:::Source-Bucket/*"
      ]
    },
    {
      "Effect": "Allow",
      "Action": [
        "s3:ListBucket",
        "s3:PutObject",
        "s3:PutObjectAcl"
      ],
      "Resource": [
        "arn:aws:s3:::Target-Bucket",
        "arn:aws:s3:::Target-Bucket/*"
      ]
    }
  ]
}

- 아래의 S3 정책 내용중,

Source-Bucket에 계정 A에서 복사를 할 버킷 이름을 적어줍니다.

Target-Bucket에 복사된 파일을 저장할 계정 B의 버킷 이름을 적어줍니다.

- 위의 설정을 완료 후 > 정책 검토 > 정책 생성을 클릭하여 정책(Policy)을 생성합니다.

- 생성된 정책을 사용자(User)의 권한에 추가를 합니다.

추가 이유는 CLI를 이용하여 S3에 접근을 하고 여러가지 명령어를 실행하기 위해서 입니다. 

- 사용자 세부 정보 설정에서 기존 사용하던 사용자(User)가 있을 시 기존 사용자에 추가, 사용 하던 사용자(User)가 없다면 새로 생성하여 *credentials.csv 파일을 다운받아 키값을 확인 합니다.


계정 B에 대한 셋팅을 끝낸 후 계정 A의 Source-Bucket의 버킷 정책을 설정합니다.

계정 A의 S3 > Source-Bucket > 권한 > 버킷 정책 >  으로 접근 하여 아래와 같은 버킷 정책을 등록해 줍니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DelegateS3Access",
      "Effect": "Allow",
      "Principal": {
        "AWS": "Account B's AccountID"
      },
      "Action": [
        "s3:ListBucket",
        "s3:GetObject"
      ],
      "Resource": [
        "arn:aws:s3:::Source-Bucket/*",
        "arn:aws:s3:::Source-Bucket"
      ]
    }
  ]
}

- 계정 B의 어카운터 아이디와 계정 A의 S3 버켓의 이름을 입력합니다.

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "DelegateS3Access",
      "Effect": "Allow",
      "Principal": {
        "AWS": "091985555702"
      },
      "Action": [
        "s3:ListBucket",
        "s3:GetObject"
      ],
      "Resource": [
        "arn:aws:s3:::may9noy-0202/*",
        "arn:aws:s3:::may9noy-0202"
      ]
    }
  ]
}

- 이제 S3 구성 및 권한 설정을 끝낸 후 CLI에 접속하여 복사를 수행하는 과정을 진행합니다.

계정 B의 IAM 키 값을 등록하여 복사 할 Source-Bucket을 AWS CLI를 이용하여 조회 합니다.

- CLI 접속 및 인증 방법 : CLI 설치 후 aws-configure 입력하여 인증 수행 (인증 파일은 IAM에서 사용자 생성시 생성되는 *.csv 파일로 인증)

* 여러 계정으로 CLI를 접속해야 한다면 --profile 이라는 기능을 사용하면 좋습니다.

#명령어 예시)
$ aws s3 ls s3://Bucket-Source

ex) $ aws s3 ls s3://may9noy-0101

- aws s3 ls s3://may9noy-0101 명령어를 통해 확인한 계정내의 파일리스트 조회.

- aws s3 ls s3://may9noy-0202 명령어를 통해 타 계정의 S3 데이터 리스트 조회.

- 계정간 복사 명령어 예시

# 예시 명령어
$ aws s3 sync s3://Bucket-Source s3://Bucket-Target

# 복사 대상 파일의 출발지 : 복사 대상 파일의 목적지
$ aws s3 sync s3://may9noy-0202 s3://may9noy-0101

- 리스트를 조회해보면 아래와 같이 최근날짜와 시간으로 추가된 파일을 확인할 수있습니다.

- 여기까지 다른계정에서 S3파일을 복사하는 방법에 대해서 알아보았습니다.

- 끝 -

'⭐ AWS > S3' 카테고리의 다른 글

S3 버킷 정적 웹 호스팅 사용하기  (0) 2023.11.17
S3 데이터 저장 및 조회 구조  (0) 2022.01.20
S3 주기적 파일 삭제  (0) 2021.06.28
S3 수명 규칙을 생성하여 데이터 관리  (0) 2021.06.28
S3 버킷  (0) 2021.04.11