Amazon S3 버킷을 다른 AWS 리전으로 마이그레이션하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2019년 5월 17일

Amazon Simple Storage Service(Amazon S3) 버킷을 다른 AWS 리전으로 옮기고 싶습니다. 어떻게 해야 합니까?

간략한 설명

기존 S3 버킷을 다른 AWS 리전으로 마이그레이션할 수 없습니다. 대신에 대상 리전에 새 버킷을 생성하십시오. 그런 다음, 소스 버킷에서 새 버킷으로 데이터를 복사합니다.

대상 리전에서 동일한 버킷 이름을 사용하려면 새 버킷을 생성하기 전에 소스 버킷을 삭제할 수 있어야 합니다. 버킷 이름이 Amazon S3의 모든 기존 버킷 사이에서 유일해야 하기 때문입니다. 소스 버킷을 삭제하는 동안 임시 버킷을 사용하여 데이터를 저장할 수 있습니다. 

​해결 방법

같은 버킷 이름을 사용하여 다른 리전의 소스 버킷을 재생성하려면 다음 단계를 따르십시오.

경고: 버킷 이름이 사용 가능한 상태이면 모든 AWS 고객이 이를 사용할 수 있습니다. 버킷 이름을 예약할 수는 없습니다. 다른 사용자가 해당 이름을 청구하여 사용 가능하게 되면, 이를 다시 사용할 수 없습니다.

1.    대상 리전(대상 버킷 A)에 임시 버킷을 생성하십시오.

2.    소스 버킷에서 대상 버킷 A로 데이터를 복사하십시오. 이 복사 작업을 수행하는 한 가지 방법은 AWS 명령줄 인터페이스(AWS CLI)를 사용하여 sync 명령을 실행하는 것입니다. 다음을 수행하십시오.

  • 새 버킷과 해당 객체가 다른 AWS 계정에 속하게 하려면 교차 계정 권한을 지닌 AWS Identity and Access Management(IAM) 사용자 또는 역할에 의해 복사 작업이 수행되어야 합니다. IAM ID가 소스 계정에 속하면 ID에 대상 버킷에 대한 권한이 있어야 합니다. IAM ID가 대상 계정에 속하면 ID에 소스 버킷에 대한 권한이 있어야 합니다.
  • 소스 계정에서 IAM ID를 사용하여 복사를 수행하는 경우, 객체의 ACL(액세스 제어 목록)을 "bucket-owner-full-control"로 설정해야 합니다. 이는 미리 제공된 ACL로서 버킷 소유자에게 객체에 대한 모든 액세스 권한을 부여합니다.
  • 복사 소요 시간은 복사하는 데이터의 양에 따라 달라집니다. 작업을 완료하는 데 걸리는 시간을 줄이기 위해 데이터 전송 세션의 인스턴스를 여러 개 실행할 수 있습니다. 예를 들어, AWS CLI를 사용하여 병렬 업로드를 실행할 수 있습니다.
 
3.    복사 작업이 완료된 후에는 소스 버킷을 삭제하십시오.

4.    bucket-exists 명령을 실행하여 버킷 이름을 사용할 수 있는지 확인하십시오. 명령이 "Waiter BucketExists failed: Max attempts exceeded"를 반환하면 해당 버킷 이름을 사용할 수 있습니다.

참고: 버킷을 삭제한 후에는 해당 이름을 다시 사용하여 대상 리전에 새 버킷을 만들기까지 어느 정도 시간이 걸릴 수 있습니다. 사용할 수 있는 버킷 이름을 즉시 청구하려면, 스크립트를 실행하여 버킷 이름의 가용 여부를 지속적으로 확인할 수 있습니다. 그러면 이름을 사용할 수 있을 때 스크립트가 CreateBucket API 호출을 실행할 수 있습니다.

5.    소스 버킷의 이름으로 대상 리전(대상 버킷 B)에 새 버킷을 생성합니다.

6.    대상 버킷 A에서 대상 버킷 B로 데이터를 복사합니다.

7.    복사 작업이 완료된 후에는 대상 버킷 A를 삭제합니다.