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

6분 분량
0

계정 간 Amazon DynamoDB 테이블 마이그레이션을 수행하려고 합니다.

간략한 설명

다음 방법 중 사용 사례에 적합한 방법을 적용하여 DynamoDB 테이블을 다른 AWS 계정으로 마이그레이션하세요.

  • AWS Backup
  • DynamoDB 가져오기 및 Amazon Simple Storage Service(S3)로 내보내기
  • Amazon S3 및 AWS Glue
  • Amazon EMR

해결 방법

AWS Backup

AWS Backup을 통해 교차 계정 간 DynamoDB 백업을 생성할 수 있습니다. 자세한 내용을 보려면 AWS 계정 전체 백업 사본 생성AWS Backup 데모를 참조하세요. 교차 계정 간 및 교차 리전 간 백업.

타겟 계정에서 다음을 수행하세요.

  1. DynamoDB가 저장된 리전의 타겟 계정에 AWS Backup 볼트를 생성합니다.
  2. 이미 구성을 완료한 AWS Key Management Service(AWS KMS) 키를 사용하여 볼트를 생성해야 합니다. 또한 해당 키를 동일 조직의 소스 계정과 미리 공유해 두어야 합니다.
  3. 볼트 생성 후에 AWS Identity and Access Management(IAM) 정책을 해당 볼트에 추가합니다. 이 추가 작업은 조직에서 백업 저장소로의 액세스를 허용하는 옵션을 선택하여 수행할 수 있습니다. 이렇게 하면 동일 조직 내 다른 계정을 볼트로 복사할 수 있습니다.

소스 계정에서 다음을 수행하세요.

  1. DynamoDB가 저장된 소스 계정에서 테이블 데이터를 마이그레이션해야 하는 리전에 AWS Backup 볼트를 생성해야 합니다.
  2. 이미 구성을 완료한 AWS KMS 키를 사용하여 볼트를 생성해야 합니다. 해당 키는 조직의 다른 계정과 공유해 둔 키입니다.
  3. 볼트에 조직 내 다른 계정을 볼트로 복사할 수 있도록 허용하는 IAM 정책을 추가합니다. 이 추가 작업은 옵션을 선택하여 수행할 수 있습니다. 조직 백업 볼트로의 액세스를 허용하는 옵션을 선택하여 수행합니다.
  4. 타겟 계정에 소스 계정의 DynamoDB 테이블을 백업하기 위한 백업 계획을 생성합니다.
  5. 소스 계정에서 생성한 볼트를 백업 볼트로 선택해야 합니다.
  6. 다른 계정 볼트로 복사 옵션을 선택합니다.
  7. 리소스 할당 시, 반드시 백업해야 하는 리소스를 포함해야 합니다. 특정 리소스 유형 포함을 선택합니다.
  8. 특정 리소스 유형 선택에서 DynamoDB를 선택합니다. 모든 테이블을 선택하거나 백업이 필요한 테이블만 단독으로 선택할 수 있습니다.

타겟 계정에서 다음을 수행하세요.

  1. 타겟 계정에 생성한 볼트로 이동합니다.
    소스 계정과 동일한 복구 지점을 확인할 수 있습니다.
  2. 타겟 계정에서 DynamoDB 테이블을 복구할 수 있습니다.

**참고:**소스 계정과 타겟 계정이 동일 조직에 있을 때만 이 방법을 사용할 수 있습니다.

DynamoDB 가져오기 및 Amazon S3로 내보내기

  1. 타겟 계정의 Amazon S3 버킷으로 테이블을 내보내기하여 DynamoDB 테이블 데이터를 마이그레이션합니다. DynamoDB에 해당 S3 버킷 관련 s3:ListBucket 권한이 있는지 확인하세요. S3 버킷에 내보내기 한 데이터로의 엑세스를 거부하는 액세스 제어 목록이 있는지 확인하세요.
  2. 내보내기를 완료하고 나면 S3 버킷에서 타겟 계정의 새 테이블로 데이터를 가져옵니다. 자세한 내용을 보려면 Amazon S3에서 DynamoDB 데이터 가져오기: 작동 방식을 참조하세요.

참고: 테이블 내보내기는 테이블의 읽기 용량을 전혀 소모하지 않을 뿐 아니라 테이블 성능 및 가용성에도 영향을 미치지 않습니다. 테이블 가져오기 또한 쓰기 용량을 전혀 소모하지 않습니다. 따라서 가져오기 작업 수행 시 추가 용량이 필요하지 않습니다.

Amazon S3 및 AWS Glue

S3 버킷 및 AWS Glue 작업을 통해 다른 AWS 계정으로 DynamoDB 테이블을 마이그레이션할 수 있습니다.

1.    DynamoDB 테이블 초기 마이그레이션은 다른 계정의 Amazon S3 버킷으로 테이블을 내보내기하여 수행할 수 있습니다.

A계정에서 B계정 S3 버킷으로 테이블을 내보내는 경우에도 여전히 A계정이 해당 객체를 소유합니다. B계정의 AWS Identify Access Management(IAM) 사용자는 기본 설정 상 객체에 액세스할 수 없습니다. 내보내기 함수는 버킷 소유자 전체 제어 액세스 제어 목록(ACL)으로 데이터를 쓰지 않습니다. 해당 객체 소유권 문제를 해결하려면 내보내기를 완료한 후 내보낸 모든 객체에 PutObjectAcl권한을 추가하세요. 이 해결 방법을 수행하면 B계정 버킷 소유자에게 내보낸 모든 객체에 액세스 권한이 부여됩니다. 자세한 내용을 보려면 다른 AWS 계정으로 Amazon S3 버킷에 업로드한 객체에 액세스할 수 없는 이유는 무엇입니까?를 참조하세요.

2.    Glue 작업을 통해 S3 버킷의 파일을 읽고 타겟 DynamoDB 테이블에 해당 파일을 쓰세요.

1단계에서 언급한 바와 같이 타겟 계정의 S3 버킷으로 데이터를 내보낸 후 타겟 계정에서 다음을 수행하세요.

Amazon S3의 데이터에 AWS Glue 크롤러를 실행합니다. 크롤러는 스키마를 추론하고 해당 스키마 정의를 사용하여 AWS Glue 데이터 카탈로그 테이블을 생성합니다.

AWS Glue 스튜디오를 통해 ETL 작업을 생성합니다. 소스, 변환, 타겟을 지정하면 AWS Glue Studio가 해당 입력을 사용하여 자동으로 PySpark 코드를 생성합니다. 이 작업 수행 시 AWS Glue 데이터 카탈로그 테이블을 소스로 지정하고 ApplyMApplyMapping 변환으로 지정합니다. 타겟은 지정하지 않습니다. AWS Glue Studio가 PySpark 코드를 발급하고 S3에서 DynamicFrame을 생성합니다.

AWS Glue Studio에서 발급한 코드의 키 이름과 데이터 유형 매핑이 올바른지 확인합니다. 매핑이 올바르지 않을 경우, 코드를 수정하고 매핑을 교정합니다. AWS Glue 작업 생성 시 타겟을 지정하지 않았으므로 이 예시의 다음과 유사한 싱크 작업을 추가로 진행합니다. 이 추가 작업 진행하면 타겟 DynamoDB 테이블에 작업을 직접 쓸 수 있습니다.

glueContext.write_dynamic_frame_from_options ( frame = Mapped, connection_type = "dynamodb", connection_options = { "dynamodb.region": "", "dynamodb.output.tableName": "", "dynamodb.throughput.write.percent": "1.0" } )

타겟 테이블로 데이터를 로드하려면 AWS Glue Studio 또는 AWS Glue 콘솔 작업 페이지에서 작업을 실행합니다.

3.    S3 버킷으로 테이블을 내보낸 후 DynamoDB 스트림 및 AWS Lambda를 통해 데이터 삽입 또는 업데이트를 소스 테이블에서 다른 계정의 타겟 테이블로 마이그레이션합니다. 자세한 내용을 보려면 Amazon DynamoDB를 통한 교차 계정 간 복사를 참조하세요.

AWS Glue

AWS Glue ETL 작업은 다른 계정의 DynamoDB 테이블에서 데이터 읽기 및 쓰기를 모두 지원합니다. dynamodb.sts.roleArn매개 변수는 작업 스크립트에서 각 계정의 교차 계정 역할을 수행합니다. 이 역할을 수행하면 교차 계정이 DynamoDB로 액세스 하는 데 반드시 필요한 임시 보안 인증 정보를 얻을 수 있습니다. 자세한 내용을 보려면 DynamoDB 테이블로의 교차 계정 교차 리전 액세스AWS Step Functions 및 AWS Glue를 통해 Amazon S3로 Amazon 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 IAM 역할이 최종 대상 계정의 S3 버킷에의 쓰기 권한을 보유하고 있는지 확인하세요. 자세한 내용을 보려면 AWS 서비스 및 리소스로의 Amazon EMR 권한 설정용 IAM 서비스 역할 구성을 참조하세요.
  3. 소스 계정에서 SSH를 통해 마스터 노드로 연결합니다.
  4. 소스 계정에서 Hive 명령을 통해 DynamoDB 테이블 데이터를 최종 대상 계정의 S3 버킷으로 내보냅니다.
  5. 타겟 계정에서 Amazon S3 데이터를 새 DynamoDB 테이블로 가져옵니다.
  6. 마이그레이션 중 발생한 쓰기를 스테이징 테이블을 통해 캡처하는 경우 스테이징 테이블에서 4단계와 5단계를 반복하세요.

관련 정보

DynamoDB와 Amazon S3 간 데이터 복사

AWS 공식
AWS 공식업데이트됨 8달 전
댓글 없음