

# DynamoDB 테이블을 한 계정에서 다른 계정으로 마이그레이션
<a name="bp-migrating-table-between-accounts"></a>

한 계정에서 다른 계정으로 Amazon DynamoDB 테이블을 마이그레이션하여 다중 계정 전략 또는 백업 전략을 구현할 수 있습니다. 테스트, 디버깅 또는 규정 준수를 위해 이 작업을 수행할 수도 있습니다. 일반적인 사용 사례는 각 환경이 서로 다른 AWS 계정을 사용하는 프로덕션, 스테이징, 테스트 및 개발 환경에서 DynamoDB 테이블을 복사하는 것입니다.

DynamoDB는 한 AWS 계정에서 다른 계정으로 테이블을 마이그레이션하는 2가지 옵션을 제공합니다.
+ **교차 계정 백업 및 복구를 위한 AWS Backup**: AWS Backup는 여러 AWS 서비스에서 백업을 중앙 집중식으로 관리할 수 있는 완전 관리형 백업 서비스입니다. 교차 계정 백업 및 복원 기능을 사용하면 한 계정의 DynamoDB 테이블을 백업하고 동일한 AWS Organization의 다른 계정으로 백업을 복원할 수 있습니다.
+ **Amazon S3로 DynamoDB 내보내기 및 가져오기:** Amazon S3로 DynamoDB 내보내기 및 가져오기 기능을 사용하면 Amazon S3 버킷으로 전체 내보내기를 수행한 다음 해당 데이터를 다른 AWS 계정의 새 테이블로 가져올 수 있습니다. 이 접근 방식은 동일한 AWS Organization에 속하지 않은 계정 간에 마이그레이션해야 하거나 AWS Backup를 사용하지 않으려는 경우에 적합합니다.

**참고**  
Amazon S3에서 가져오기는 로컬 보조 인덱스(LSI)가 있는 테이블을 지원하지 않지만, 글로벌 보조 인덱스(GSI)는 지원합니다. LSI 및 GSI에 대한 자세한 내용은 [DynamoDB에서 보조 인덱스를 사용하여 데이터 액세스 개선](SecondaryIndexes.md) 섹션을 참조하세요.

**Topics**
+ [교차 계정 백업 및 복원 시 AWS Backup을 사용하여 테이블 마이그레이션](bp-migrating-table-between-accounts-backup.md)
+ [S3로 내보내기를 사용하여 테이블을 마이그레이션하고 S3에서 가져오기](bp-migrating-table-between-accounts-s3.md)

# 교차 계정 백업 및 복원 시 AWS Backup을 사용하여 테이블 마이그레이션
<a name="bp-migrating-table-between-accounts-backup"></a>

**사전 조건**:
+ 소스 및 대상 AWS 계정은 AWS Organizations 서비스에서 동일한 조직에 속해 있어야 합니다.
+ 유효한 AWS Identity and Access Management(IAM) 권한으로 AWS Backup 볼트를 생성하고 사용할 수 있어야 합니다.

교차 계정 백업 설정에 대한 자세한 내용은 [AWS 계정 간 백업 복사본 생성](https://docs.aws.amazon.com/aws-backup/latest/devguide/create-cross-account-backup.html)을 참조하세요.

**요금 정보**

AWS는 백업(테이블 크기 기준), AWS 리전 간의 모든 데이터 복사(데이터 양 기준), 복원(데이터 양 기준), 사용 중인 모든 스토리지 요금을 청구합니다. 비용이 지속적으로 청구되지 않도록 하려면 복원 후 필요하지 않은 백업을 삭제하면 됩니다.

요금에 대한 자세한 내용은 [AWS Backup 요금](https://aws.amazon.com/backup/pricing/)을 참조하세요.

## 1단계: DynamoDB 및 교차 계정 백업을 위한 고급 기능 활성화
<a name="bp-migrating-table-between-accounts-backup-enable-advanced-features"></a>

1. 소스 및 대상 AWS 계정 모두에서 AWS Management Console에 액세스하고 AWS Backup 콘솔을 엽니다.

1. **설정** 옵션을 선택합니다.

1. **Amazon DynamoDB 백업용 고급 기능**에서 **고급 기능**이 활성화되어 있는지 확인합니다. 활성화되어 있지 않으면 **활성화**를 선택합니다.

1. **교차 계정 관리**에서 **교차 계정 백업**에 대하여 **설정**을 선택합니다.

## 2단계: 소스 계정 및 대상 계정에 백업 볼트 생성
<a name="bp-migrating-table-between-accounts-backup-create-backup-vault"></a>

1. 소스 AWS 계정에서 AWS Backup 콘솔을 엽니다.

1. **백업 볼트**를 선택합니다.

1. **백업 저장소 생성**을 선택합니다.

1. 생성된 백업 볼트와 대상 AWS 계정의 **Amazon 리소스 이름(ARN)**을 복사하고 저장합니다.

1. 계정 간에 DynamoDB 테이블 백업을 복사할 때는 소스 및 대상 백업 볼트의 ARN이 모두 필요합니다.

## 3단계: 소스 계정에 DynamoDB 테이블 백업 생성
<a name="bp-migrating-table-between-accounts-backup-create-table-backup"></a>

1. **AWS Backup 대시보드 페이지**에서 **온디맨드 백업 생성**을 선택합니다.

1. **설정** 섹션에서 **리소스 유형**으로 **DynamoDB**를 선택한 다음 테이블 이름을 선택합니다.

1. **백업 볼트** 드롭다운 목록에서 소스 계정에서 생성한 백업 볼트를 선택합니다.

1. 원하는 **보존 기간**을 선택합니다.

1. **온디맨드 백업 생성**을 선택합니다.

1. **AWS Backup 작업** 페이지의 **Backup 작업** 탭에서 백업 작업의 상태를 모니터링합니다.

## 4단계: DynamoDB 테이블 백업을 소스 계정에서 대상 계정으로 복사
<a name="bp-migrating-table-between-accounts-backup-copy-table-backup"></a>

1. 백업 작업이 완료되면 소스 계정에서 AWS Backup 콘솔을 열고 **백업 볼트**를 선택합니다.

1. **백업**에서 DynamoDB 테이블 백업을 선택합니다. **작업**을 선택하고 **복사**를 선택합니다.

1. 대상 계정의 AWS 리전을 입력합니다.

1. **외부 볼트 ARN**의 경우 대상 계정에서 생성한 백업 볼트의 ARN을 입력합니다.

1.  대상 계정 백업 볼트에서 액세스를 활성화합니다.

## 5단계: 대상 계정에서 DynamoDB 테이블 백업 복원
<a name="bp-migrating-table-between-accounts-restore-table-backup"></a>

1. 대상 AWS 계정에서 AWS Backup 콘솔을 열고 **백업 볼트**를 선택합니다.

1. **백업**에서 소스 계정을 통해 복사한 백업을 선택합니다. **작업**을 선택한 다음, **복원**을 선택합니다.

1. 새 DynamoDB 테이블의 이름, 새 테이블에 적용할 암호화, 복원을 암호화할 키 및 기타 옵션을 입력합니다.

1. 복원이 완료되면 테이블 상태가 **활성**으로 표시됩니다.

# S3로 내보내기를 사용하여 테이블을 마이그레이션하고 S3에서 가져오기
<a name="bp-migrating-table-between-accounts-s3"></a>

**사전 조건**:
+ S3로 내보내기를 수행하려면 테이블에 대해 시점 복구(PITR)를 활성화해야 합니다. 자세한 내용은 [DynamoDB에서 특정 시점 복구 사용](PointInTimeRecovery_Howitworks.md) 섹션을 참조하세요.
+ 내보내기를 수행할 수 있는 유효한 IAM 권한이 있어야 합니다. 자세한 내용은 [DynamoDB에서 테이블 내보내기 요청](S3DataExport_Requesting.md) 섹션을 참조하세요.
+ 가져오기를 수행하기에 충분히 유효한 IAM 권한이 있어야 합니다. 자세한 내용은 [DynamoDB에서 테이블 가져오기 요청](S3DataImport.Requesting.md) 섹션을 참조하세요.

**요금 정보**

AWS는 PITR에 대한 요금을 테이블 크기 및 PITR이 활성화된 기간을 기준으로 부과합니다. 내보내기 외에 PITR이 필요하지 않은 경우 내보내기가 끝난 후 PITR을 설정 해제할 수 있습니다. AWS에서는 또한 S3에 대한 요청, 내보낸 데이터를 S3에 저장, 가져오기에 대해서도 가져온 데이터의 압축되지 않은 크기 기준으로 요금을 부과합니다.

DynamoDB 요금에 대한 자세한 내용은 [DynamoDB 요금](https://aws.amazon.com/dynamodb/pricing/)을 참조하세요.

**참고**  
 S3에서 DynamoDB로 가져올 때는 개체 크기 및 수에 제한이 있습니다. 자세한 내용은 [가져오기 할당량](S3DataImport.Validation.md#S3DataImport.Validation.limits) 섹션을 참조하세요.

## Amazon S3로 테이블 내보내기 요청
<a name="bp-migrating-table-between-accounts-s3-table-export"></a>

1. AWS Management Console에 로그인하고 DynamoDB 콘솔을 엽니다.

1. 콘솔 왼쪽의 탐색 창에서 **S3로 내보내기(Exports to S3)**를 선택합니다.

1. 소스 테이블과 대상 S3 버킷을 선택합니다. 대상 계정 버킷의 URL을 `s3://bucketname/prefix` 형식으로 입력합니다. `/prefix`는 대상 버킷을 체계적으로 구성된 상태로 유지하는 데 도움이 되는 선택적 폴더입니다.

1. **전체 내보내기**를 선택합니다. 전체 내보내기는 지정한 시점의 테이블의 전체 테이블 스냅샷을 출력합니다.

   1. 최신 전체 테이블 스냅샷을 내보내려면 **현재 시간**을 선택합니다.

   1. **내보낸 파일 형식**에서 DynamoDB JSON과 Amazon Ion 중에 선택합니다. 기본 옵션은 DynamoDB JSON입니다.

1. **내보내기** 버튼을 클릭하여 내보내기를 시작합니다.

1. 소규모 테이블 내보내기는 몇 분 안에 완료되지만, 테라바이트 범위의 테이블은 1시간 이상 걸릴 수 있습니다.

## Amazon S3에서 테이블 가져오기 요청
<a name="bp-migrating-table-between-accounts-s3-table-import"></a>

1. AWS Management Console에 로그인하고 DynamoDB 콘솔을 엽니다.

1. 콘솔 왼쪽의 탐색 창에서 **S3에서 가져오기(Import from S3)**를 선택합니다.

1. 표시되는 페이지에서 **S3에서 가져오기(Import from S3)**를 선택합니다.

1. Amazon S3 소스 URL을 입력합니다. **S3 찾아보기** 버튼을 사용하여 찾을 수도 있습니다. 예상 경로의 형식은 `s3://bucket/prefix/AWSDynamoDB/<XXXXXXXX-XXXXXX>/data/`입니다.

1. S3 버킷 소유자(S3 bucket owner)인지 여부를 지정합니다.

1. **가져오기 파일 압축**에서 내보내기와 일치하는 **GZIP**을 선택합니다.

1. **가져오기 파일 형식**에서 내보내기와 일치하는 **DynamoDB JSON**을 선택합니다.

1. **다음**을 선택합니다. **테이블 세부 정보 지정**에서 데이터를 저장하기 위해 생성할 새 테이블에 대한 옵션을 선택합니다.

1. **다음**을 선택합니다. **테이블 설정 구성**에서 해당하는 경우 추가 테이블 설정을 사용자 지정합니다.

1. **다음(Next)**을 다시 선택하여 가져오기 옵션을 검토하고 **가져오기(Import)**를 클릭하여 가져오기 작업을 시작합니다. **S3에서 가져오기** 아래에 **가져오는 중** 상태로 새 테이블이 나열됩니다. 이 시간 동안에는 테이블에 액세스할 수 없습니다. 소규모 가져오기는 몇 분 안에 완료되지만, 테라바이트 범위의 테이블은 1시간 이상 걸릴 수 있습니다.

1. 가져오기가 완료되면 상태가 **활성**으로 표시되고 테이블 사용을 시작할 수 있습니다.

## 마이그레이션 중 테이블 동기화 유지
<a name="bp-migrating-table-between-accounts-s3-table-sync"></a>

마이그레이션하는 동안 소스 테이블에 대한 쓰기 작업을 일시 중지할 수 있는 경우 마이그레이션 후 소스와 출력이 정확히 일치해야 합니다. 쓰기 작업을 일시 중지할 수 없는 경우 일반적으로 마이그레이션 후 대상 테이블이 소스보다 약간 뒤처집니다. 소스 테이블을 따라잡으려면 스트리밍(DynamoDB Streams 또는 DynamoDB용 Kinesis Data Streams)을 사용하여 백업 또는 내보내기 이후 소스 테이블에서 발생한 쓰기를 재생할 수 있습니다.

소스 테이블을 S3로 내보낸 타임스탬프 이전에 스트림 레코드 읽기를 시작해야 합니다. 예를 들어, S3로 내보내기가 오후 2시에 발생하고 대상 테이블로의 가져오기가 오후 11시에 완료되었다면 오후 1시 58분에 DynamoDB 스트림 읽기를 시작해야 합니다. 변경 데이터 캡처를 위한 스트리밍 옵션 테이블에는 각 스트리밍 모델의 기능이 간략하게 나와 있습니다.

Lambda와 함께 DynamoDB Streams를 사용하면 소스 및 대상 DynamoDB 테이블 간에 데이터를 간편하게 동기화할 수 있습니다. Lambda 함수를 사용하여 대상 테이블의 각 쓰기를 재생할 수 있습니다.

**참고**  
항목은 DynamoDB Streams에 24시간 동안 보관되므로, 해당 기간 내에 백업 및 복원 또는 내보내기와 가져오기를 완료할 계획을 세워야 합니다.