AWS 다른 계정으로 S3 버킷 복사하기

summereuna🐥·2024년 10월 30일
0

기존에 사용하던 AWS 계정에서 다른 AWS 계정으로 S3 버킷 안에 있는 폴더구조를 포함한 파일을 한 번에 싹! 옮기고 싶다면 아래 방법을 사용하면 된다.


A 계정: Source Bucket (기존 계정)
B 계정: Target Bucket (기존 계정의 버킷을 복사하여 넣어줄 타겟 계정)


1. 복사할 타겟 계정인 B 계정에서 S3 버킷을 생성하고, S3 버킷에 대한 권한을 full로 가지는 IAM 사용자를 생성한다.


(* B계정에서 S3 버킷 생성 후 진행하면 된다.)

  1. 원하는 사용자 이름을 작성한다.
  2. 직접 정책 연결 선택 후, 권한 정책에서 s3full을 검색하여 AmazonS3FullAccess 정책을 선택한다.
  3. 사용자 생성을 클릭한다.

2. IAM 사용자의 Access key, Access secret key를 생성한다.


  1. 방금 생성한 IAM 사용자 이름을 클릭한다.

    2. 액세스 키 만들기를 선택한다.
  2. 본인에게 맞는 사례를 선택한다.
    나는 AWS 외부에서 실행되는 애플리케이션을 선택했다.
  3. 액세스 키 만들기를 선택한다.
    설명 태그는 선택 사항이어서 그냥 건너 뛰어도 무방하다.
  4. 액세스 키비밀 액세스 키를 복사해 둔다. 비밀 액세스 키는 여기에서 딱 한번 볼 수 있다!
    보안을 생각한다면 키를 직접 복사하여 사용하는 것 대신 .csv 파일을 다운로드 받아 사용해도 된다.

3. B 계정에 기존 계정의 버킷을 읽고 가져오기 위해 IAM 정책을 추가로 생성한다.


  1. 권한 추가 > 인라인 정책 생성을 클릭한다.
    또는 오른쪽 메뉴 탭에서 정책을 클릭하여, 새로운 정책을 생성할 수도 있지만, 그러면 IAM 사용자에게 정책을 따로 설정해 줘야 하기 때문에 여기서 바로 하는게 편하다.

  2. 버킷 복사를 위한 정책을 입력한다.
    Source Bucket에는 기존 계정 A의 S3 버킷 이름을, Target Bucket에는 새로운 계정 B의 S3 버킷 이름을 적으면 된다.

{
  "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/*"
      ]
    }
  ]
}
  1. 원하는 정책 이름으로 정책을 생성한다.
  1. 그러면 버킷을 복사해 오기 위한 정책이 IAM 사용자에게 추가된다.

4. B 계정이 A 계정의 S3 버킷에 접근할 수 있도록 기존 계정 A의 S3 버킷 정책을 변경한다.


  1. 기존 계정 A의 S3 버킷 정책을 편집한다.
  1. Source Bucket에는 A의 S3 버킷 이름을,
    Account B's AccountID에는 B계정의 ID (12자리 숫자)를 입력한다.
{
  "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"
      ]
    }
  ]
}
  • AWS 계정의 ID (12자리 숫자)는 오른쪽 상단에서 확인할 수 있다.

5. AWS CLI를 사용하여 sync를 진행한다.


  1. 터미널에서 아래 명령어를 입력하여 계정 B의 IAM 사용자를 등록한다.
    IAM 사용자 생성시 복사해 둔 액세스 키비밀 액세스 키를 사용한다.
    Default region, Default output format은 비워둬도 문제없다.
$ aws configure

  1. A계정의 S3 버킷을 B계정의 버킷으로 sync하기 위해 아래 명령어를 입력한다.
    Bucket-Source에는 A계정의 S3 버킷 이름을,
    Bucket-Target에는 B계정의 S3 버킷 이름을 작성하면 된다.
$ aws s3 sync s3://Bucket-Source s3://Bucket-Target
  1. 그러면 터미널에서 기존 A계정의 S3 버킷에 있던 것들이 B로 복사되는 것을 확인할 수 있다.
    B계정의 S3 버킷을 확인해 보자. 잘 복사 되었다면 성공이다!
profile
Always have hope🍀 & constant passion🔥

0개의 댓글