Knowledge Center Monthly Newsletter - March 2025
Stay up to date with the latest from the Knowledge Center. See all new and updated Knowledge Center articles published in the last month and re:Post’s top contributors.
한 AWS 계정에서 다른 AWS 계정으로 DynamoDB 테이블을 마이그레이션하려면 어떻게 해야 합니까?
Amazon DynamoDB 테이블의 데이터를 동일한 계정이나 다른 계정의 또 다른 계정에 있는 새 테이블에 복사하고 싶습니다.
간략한 설명
한 AWS 계정에 있는 DynamoDB 테이블의 데이터를 다른 AWS 계정으로 전송하는 데 사용할 수 있는 몇 가지 방법이 있습니다. 최선의 선택은 데이터 볼륨, 실시간 업데이트 필요성, 데이터 변환의 복잡성 등 여러 요인에 따라 달라질 수 있습니다.
DynamoDB 테이블을 한 AWS 계정에서 다른 AWS 계정으로 마이그레이션하려면 다음 옵션 중 하나를 선택하십시오.
- AWS Backup
- DynamoDB를 Amazon Simple Storage Service(Amazon S3)로 내보내기 및 가져오기
- Amazon EMR
- AWS Data Pipeline
- Amazon S3 및 AWS Glue
- 사용자 지정 내보내기 및 가져오기 스크립트
해결 방법
사용 사례에 따라 다음 작업을 완료하십시오.
AWS Backup
동일한 AWS Organizations 조직 내 소스 및 대상 AWS 계정의 경우, AWS Backup은 교차 리전 및 교차 계정 DynamoDB 데이터 전송을 수행할 수 있습니다. 자세한 내용은 AWS 계정 전체에 백업 사본 생성을 참조하십시오.
대상 계정에서 다음 단계를 완료하십시오.
- DynamoDB가 있는 AWS 리전의 대상 계정에 AWS Backup 볼트를 생성합니다. 볼트를 생성할 때는 구성한 AWS Key Management Service(AWS KMS) 키를 사용하십시오. 이 키는 동일한 조직의 소스 계정과 공유된 키입니다.
- 볼트에 백업할 수 있는 AWS Identity and Access Management(IAM) 정책을 볼트에 추가합니다. 이렇게 하려면 Allow access to a backup vault from organization(조직에서 백업 볼트로의 액세스 허용) 옵션을 선택합니다. 이렇게 하면 동일한 조직 내의 다른 계정을 볼트로 복사할 수 있습니다.
소스 계정에서 다음 작업을 완료하십시오.
- 테이블 데이터를 마이그레이션해야 하는 리전에 AWS Backup 볼트를 생성합니다. 이미 구성한 AWS KMS 키를 사용하여 볼트를 생성합니다. 해당 키는 조직의 다른 계정과 공유된 키입니다.
- 조직 내 다른 계정을 볼트로 복사할 수 있도록 허용하는 IAM 정책을 볼트에 추가합니다. 이렇게 하려면 Allow access to a backup vault from organization(조직에서 백업 볼트로의 액세스 허용) 옵션을 선택합니다.
- 대상 계정에 소스 계정의 DynamoDB 테이블을 백업하기 위한 백업 계획을 생성합니다. 소스 계정에서 생성한 볼트를 백업 볼트로 선택합니다.
- 다른 계정의 볼트로 복사 옵션을 선택합니다.
- 리소스 할당에서 특정 리소스 유형 포함 옵션을 선택하여 백업해야 하는 리소스를 포함합니다.
- 특정 리소스 유형 선택에서 DynamoDB를 선택합니다. 그런 다음, 모든 테이블을 선택하거나 백업해야 하는 테이블만 선택합니다.
구성을 검토하고 테이블을 복원하려면 다음 단계를 완료하십시오.
- 대상 계정에서 생성한 볼트로 이동합니다. 소스 계정과 동일한 복구 지점을 확인할 수 있습니다.
- 대상 계정에서 DynamoDB 테이블을 복원합니다.
참고: 이 옵션은 동일한 AWS 조직에 속한 계정에만 지원됩니다.
DynamoDB를 Amazon S3로 내보내기 및 가져오기
Amazon S3로 DynamoDB 내보내기 기능을 사용하여 특정 시점의 복구 기간 내 언제든지 Amazon DynamoDB 테이블에서 데이터를 내보낼 수 있습니다. 이 기능을 사용하는 방법에 대한 예제는 코드 작성 없이 Amazon DynamoDB 테이블 데이터를 Amazon S3의 데이터 레이크로 내보내기를 참조하십시오.
Amazon S3로 DynamoDB 내보내기 기능을 사용하려면 다음 단계를 완료하십시오.
- DynamoDB 테이블 데이터를 마이그레이션하려면 대상 계정의 Amazon S3 버킷으로 테이블을 내보냅니다.
참고: DynamoDB에는 이 S3 버킷에 대한 s3:ListBucket 권한이 있어야 합니다. S3 버킷에는 내보낸 데이터에 대한 엑세스를 거부하는 액세스 제어 목록이 있을 수 없습니다. - S3 버킷의 데이터를 대상 계정에 있는 새 테이블로 가져옵니다.
참고: 이 옵션을 사용하려면 AWS Data Pipeline, 교차 계정 권한 및 IAM 역할을 설정하고 관리해야 합니다.
Amazon EMR
Amazon EMR을 사용하여 S3 버킷으로 데이터를 내보내려면 다음 방법 중 하나를 사용하십시오.
- DynamoDBStorageHandler를 사용하여 DynamoDB 테이블에 대해 Hive 또는 Spark 쿼리를 실행합니다. 자세한 내용은 ](https://docs.aws.amazon.com/emr/latest/ReleaseGuide/EMR_Hive_Commands.html#EMR_Hive_Commands_exporting)DynamoDB에서 데이터 내보내기[를 참조하십시오.
- DynamoDB 테이블을 내보내거나 가져오려면 GitHub의 오픈 소스 emr-dynamodb-tool을 사용합니다.
Amazon EMR을 사용하여 DynamoDB 테이블을 마이그레이션하려면 다음 단계를 완료하십시오.
- 소스 및 대상 계정에서 모두 EMR 클러스터를 실행합니다. 소프트웨어 구성 섹션에서 Apache Hive를 포함하는 옵션을 선택합니다.
참고: Amazon EMR 클러스터를 프라이빗 서브넷으로 시작하는 것이 가장 좋습니다. 프라이빗 서브넷에는 Amazon S3 VPC 엔드포인트 및 DynamoDB로의 경로가 있어야 합니다. 클러스터가 인터넷에 액세스해야 하는 경우 퍼블릭 서브넷의 NAT 게이트웨이를 사용합니다. 자세한 내용은 프라이빗 서브넷에 서버가 있는 VPC와 NAT를 참조하십시오. - 대상 계정의 S3 버킷에 쓰기 권한을 갖도록 두 계정에서 모두 EMR_EC2_DefaultRole IAM 역할을 업데이트합니다. 자세한 내용은 AWS 서비스 및 리소스에 대한 Amazon EMR 권한의 IAM 서비스 역할 구성을 참조하십시오.
- 소스 계정에서 SSH를 사용하여 리더 노드에 연결합니다.
- 소스 계정에서 Hive 명령을 통해 DynamoDB 테이블 데이터를 대상 계정의 S3 버킷으로 내보냅니다.
- 대상 계정에서 Amazon S3 데이터를 새 DynamoDB 테이블로 가져옵니다.
참고: 마이그레이션 중 발생하는 쓰기를 스테이징 테이블을 사용해 캡처하는 경우 스테이징 테이블에서 3단계와 4단계를 반복합니다.
가동 중지 시간을 줄이기 위해 마이그레이션 중에 발생하는 모든 트랜잭션을 스테이징 테이블에 저장할 수 있습니다. 소스 테이블을 대상 계정으로 마이그레이션한 후 스테이징 테이블의 새 트랜잭션을 대상 테이블로 푸시합니다.
Amazon EMR을 통해 테이블을 마이그레이션하는 데 걸리는 시간은 다를 수 있습니다. 시간은 DynamoDB 테이블의 프로비저닝된 처리량, 네트워크 성능, 테이블에 저장된 데이터의 양에 따라 달라집니다.
참고: 이 옵션을 사용하려면 EMR 클러스터를 생성하고 유지 관리해야 합니다.
AWS Data Pipeline
AWS Data Pipeline을 사용하여 DynamoDB 테이블의 데이터를 Amazon S3 버킷의 파일로 내보냅니다. 이 옵션은 Amazon EMR에서 관리형 Hadoop 클러스터를 실행하여 DynamoDB와 Amazon S3 간에 읽기 및 쓰기를 수행합니다.
참고: 이 옵션을 사용하려면 AWS Data Pipeline, 교차 계정 권한 및 IAM 역할을 설정하고 관리해야 합니다.
Amazon S3 및 AWS Glue
AWS Glue ETL 작업은 다른 계정의 DynamoDB 테이블에서 데이터를 읽고 다른 계정의 DynamoDB 테이블에 데이터를 쓰는 것을 지원합니다. dynamodb.sts.roleArn 파라미터를 사용하여 작업 스크립트에서 교차 계정 역할을 수임합니다. 역할을 수임하면 DynamoDB에 대한 교차 계정 액세스에 사용해야 하는 임시 자격 증명을 받게 됩니다. 자세한 내용은 DynamoDB 테이블의 교차 계정 교차 리전 액세스 및 AWS Step Functions 및 AWS Glue를 통해 Amazon S3로 Amazon DynamoDB 테이블을 내보내는 방법을 참조하십시오.
참고: 이 옵션을 사용하려면 Spark를 광범위하게 사용해야 하며 AWS Glue ETL 작업의 소스 코드를 유지 관리해야 합니다. 자세한 내용은 DynamoDB 연결을 참조하십시오.
사용자 지정 내보내기 및 가져오기 스크립트
약 2GB의 소규모 데이터세트 또는 일회성 전송의 경우 수동 내보내기 및 가져오기 프로세스를 사용할 수 있습니다. 예를 들어 DynamoDB 스캔 작업을 사용하는 C# 코드를 사용하여 소스 테이블에서 항목을 읽을 수 있습니다. 그런 다음, 코드는 BatchWriteItem API 호출을 사용하여 대상 계정의 대상 테이블에 데이터를 씁니다.
참고: 이 프로세스는 대규모 데이터세트의 경우 시간이 오래 걸릴 수 있으며 사용자 지정 스크립팅이 필요합니다. 스크립트를 실행하는 IAM 엔터티의 경우 교차 계정 S3 액세스를 구성해야 합니다.
관련 정보
한 AWS 계정에서 다른 AWS 계정으로 Amazon DynamoDB 테이블을 마이그레이션하려면 어떻게 해야 합니까?
관련 콘텐츠
- 질문됨 9달 전lg...
- 질문됨 2년 전lg...
- 질문됨 한 달 전lg...
- AWS 공식업데이트됨 2년 전
- AWS 공식업데이트됨 2년 전
- AWS 공식업데이트됨 3년 전