DynamoDB 테이블을 한 AWS 계정에서 다른 AWS 계정으로 마이그레이션하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 9월 24일

교차 계정 DynamoDB 테이블 마이그레이션을 수행하려면 어떻게 해야 합니까?

간략한 설명

AWS Data Pipeline 또는 Amazon EMR을 사용하여 DynamoDB 테이블을 다른 AWS 계정으로 이전할 수 있습니다. Data Pipeline은 가장 빠르고 쉬운 방법이지만 사용자 지정 옵션이 적습니다. Amazon EMR은 프로세스를 더 효과적으로 제어하고자 하는 기술 전문성을 보유한 사용자에게 더 나은 선택입니다.

해결 방법

Data Pipeline

Data Pipeline을 사용하여 DynamoDB 테이블을 다른 계정으로 이전하려면 DynamoDB 테이블을 다른 계정의 S3 버킷으로 백업하기 위해 Data Pipeline을 어떻게 사용할 수 있습니까?를 참조하세요.

참고: 대상 계정은 Amazon Simple Storage Service(Amazon S3) 버킷의 DynamoDB 데이터에 액세스할 수 없습니다. 데이터를 사용하여 작업하려면 DynamoDB 테이블로 데이터를 복원합니다.

Amazon EMR

Amazon EMR을 사용하여 DynamoDB 테이블을 마이그레이션하는 경우 사용 사례에 따라 두 가지 옵션을 사용할 수 있습니다.

  • 마이그레이션 중에 가동 중지 시간을 감당할 수 있는 경우 원본 테이블에 대한 쓰기 작업을 중지하여 대상 테이블이 원본 테이블과 동기화되도록 합니다.
  • 가동 중지 시간을 감당할 수 없다면 마이그레이션 중에 발생하는 모든 트랜잭션을 스테이징 테이블에 저장해야합니다. 원래 테이블을 다른 AWS 계정으로 마이그레이션한 후 스테이징 테이블에서 대상 테이블로 새 트랜잭션을 푸시합니다.

참고: Amazon EMR을 사용하여 테이블을 마이그레이션하는 데 필요한 시간은 네트워크 성능, DynamoDB 테이블의 프로비저닝된 처리량, 테이블에 저장된 데이터 양 등에 따라 크게 달라질 수 있습니다.

Amazon EMR을 사용하여 DynamoDB 테이블을 마이그레이션하려면:

  1. 소스 계정과 대상 계정 모두에서EMR 클러스터를 시작합니다. 소프트웨어 구성 섹션에서 Apache Hive를 포함하는 옵션을 선택해야 합니다.
    참고: Amazon EMR 클러스터를 프라이빗 서브넷으로 시작하는 것이 보안 모범 사례입니다. 프라이빗 서브넷에는 Amazon S3 VPC 종단점과 DynamoDB로의 경로가 있어야 합니다. 자세한 내용은 프라이빗 서브넷을 참조하세요. 클러스터가 인터넷에 액세스해야 하는 경우 퍼블릭 서브넷에 상주하는 NAT 게이트웨이를 사용합니다. 자세한 내용은 퍼블릭 및 프라이빗 서브넷이 있는 VPC(NAT)를 참조하세요.
  2. 두 계정의 EMR_EC2_DefaulTrole AWS Identity and Access Management(IAM) 역할에는 대상 계정의 S3 버킷에 대한 쓰기 권한이 있어야 합니다. 자세한 내용은 AWS 서비스 및 리소스에 대한 Amazon EMR 권한 IAM 서비스 역할 구성을 참조하세요.
  3. 소스 계정에서 SSH를 사용하여 마스터 노드에 연결합니다.
  4. 소스 계정에서 Hive 명령을 사용하여 DynamoDB 테이블 데이터를 대상 계정의 S3 버킷으로 내보냅니다.
  5. 대상 계정에서 Amazon S3 데이터를 새 DynamoDB 테이블로 가져옵니다.
  6. 스테이징 테이블을 사용하여 마이그레이션 중에 발생한 쓰기를 캡처하는 경우 스테이징 테이블에서 4단계와 5단계를 반복합니다.