DynamoDB 테이블을 다른 계정/리전으로 복사
DynamoDB에는 원클릭 "테이블 복사" 명령이 없습니다 — AWS CLI나 콘솔. 모든 복사본은 실제로 두 부분으로 구성됩니다. 소스에서 데이터를 가져오고 대상 테이블에 로드합니다. 전반부는 GUI가 유지되는 곳입니다. 무손실, 필터링, 검증된 내보내기 — 후반부는 항상 AWS에서 실행됩니다. 툴링. 이 가이드에서는 두 가지 모두와 프로덕션에서 문제가 되는 운영 문제를 다룹니다.
DynamoDB 테이블을 다른 계정이나 리전으로 복사하려면 어떻게 해야 합니까?
기본 복사 테이블 명령이 없습니다. out 절반의 경우 무손실을 당깁니다. DynamoDB-JSON 테이블 내보내기(DynoTable에서 한 번 클릭, 스크립트 없음) 또는 관리형 S3 내보내기로 스냅샷을 찍습니다. in 절반에는 AWS 측을 선택하세요. 적합한 접근 방식: 작은 일회용 복사본을 위한 Scan + BatchWriteItem 스크립트, S3 대규모 테이블의 경우 내보내기 후 가져오기, 교차 계정의 경우 AWS 백업 복사 + 복원 완전한 충실도로 이동하거나 지속적인 실시간 복제를 위해 글로벌 테이블을 이동합니다. 각각 복원 또는 가져오기를 수행하면 새 테이블이 생성됩니다.
| 상황 | 최선의 접근 방식 |
|---|---|
| 작은 테이블, 일회용, 전체 제어 | 스캔 + BatchWriteItem 스크립트 |
| 큰 테이블, 스냅샷을 허용할 수 있음 | S3 내보내기 → 가져오기 (새 테이블 생성) |
| 복원이 포함된 교차 계정/교차 지역 | AWS 백업 복사 + 복원 |
| 지속적인 실시간 복제(일회성 복사본 아님) | 전역 테이블 |
보편적으로 "올바른" 접근 방식은 없습니다. 테이블 크기, 필요한지 여부에 따라 다릅니다. 특정 시점 스냅샷 또는 라이브 데이터 및 대상이 신규인지 기존인지 여부 테이블.
내보내기 절반: DynoTable로 데이터 가져오기
복원이 이루어지기 전에 데이터는 소스를 떠나야 하며, 이를 직접 수행해야 합니다. 스캔 루프는 소규모 마이그레이션에서 가장 오류가 발생하기 쉬운 부분입니다(페이지 삭제, 맹글링). 숫자 정밀도, 유형 태그가 너무 일찍 제거됨). DynoTable 그런가요 한 번의 클릭으로 절반:
- 무손실 설계: 전체 필터 일치를 마샬링된 상태로 내보냅니다. DynamoDB-JSON — 큰 숫자를 보존하는 유형 래핑 와이어 형식 (> 2⁵³) 일반 JSON이 손상되거나 대상이 그렇지 않은 경우 NDJSON/CSV로 DynamoDB 전혀. 에 대해서는 export to CSV를 참조하십시오. 형식 세부정보.
- 전부 아니면 전무가 아닌 범위 지정: 관리형 S3 내보내기 스냅샷은 전체
테이블; DynoTable은 쿼리가 일치하는 모든 항목을 직접 스트리밍하여 내보냅니다.
DynamoDB에서 — "스테이징에
TENANT#42항목만 복사"는 필터입니다. 스크립트가 아닙니다. - 큰 테이블 환영: 내보내기는 백그라운드에서 분리 및 실행되며 다음으로 스트리밍됩니다. 디스크 행 단위 — 탭 전환 및 앱 다시 로드 후에도 수 기가바이트 풀이 유지됩니다.
- 로드 후 확인: 대상 테이블이 실행되면 소스 찾아보기 나란히 타겟팅하고 항목 수를 비교합니다. (table size & item count) 및 즉석 점검 샘플 기록 - 확인 스크립트를 작성하지 않고.
정직한 경계: DynoTable은 데이터를 출력하고 결과를 확인합니다. 대상 테이블에 대한 로드는 AWS 도구(쓰기 스크립트, S3 가져오기, 또는 백업 복원)에 대해서는 다음에서 다룹니다.
접근 방식 1: Scan + BatchWriteItem(스크립트)
가장 낮은 기술 옵션: Scan가 있는 소스에서 모든 항목을 읽고,
BatchWriteItem가 있는 목적지. 다음 조건을 충족하는 한 교차 계정 및 지역 간 작동이 가능합니다.
스크립트는 양측에 대한 자격 증명을 보유합니다(또는 대상 계정에서 역할을 맡습니다).
# Sketch — read source, write target (pseudo; use the SDK in real life)
aws dynamodb scan --table-name SourceTable --region us-east-1 \
> items.json
# transform Items[] into BatchWriteItem RequestItems, then:
aws dynamodb batch-write-item --request-items file://batch.json \
--region eu-west-1문제는 실제적이고 놓치기 쉽습니다.
- 25개 항목 또는 호출당 16MB의 최대
BatchWriteItem— 청크가 필요하고 단일 호출은 _처리되지 않은 항목_을 반환할 수 있습니다. 지수 백오프로 다시 시도해야 합니다. (API reference). - 쓰기는 쓰기 용량을 소비합니다. 목표에 도달하게 됩니다.
ProvisionedThroughputExceededException빠르다; 는 더 많은 것을 흡수하지만 여전히 모자릅니다. 각 파티션은 1,000WCU/3,000RCU로 엄격하게 제한됩니다. 대상 용량에 맞춰 쓰기 로드 크기 조정 시작하기 전에. Scan는 전체 테이블을 읽고 모든 항목을 측정합니다. — 클래식 Query-vs-Scan 비용. 큰 테이블은 페이지 매기기를 의미하기도 합니다.LastEvaluatedKey; pagination를 참조하세요.- 원자적이지 않음: 스캔이 진행되는 동안 작성된 항목은 누락될 수 있습니다. 소스가 정지된 경우 일관된 스냅샷을 얻습니다.
작은 테이블이나 복사 중에 변환/필터링이 필요한 경우에 가장 적합합니다. 읽기 절반은 이미 DynoTable 마샬링 내보내기로 존재하며 스크립트는 다음으로 축소됩니다. 단지 청크 앤 쓰기 루프일 뿐입니다.
접근 방식 2: S3으로 내보낸 후 새 테이블로 가져오기
대규모 테이블의 경우 DynamoDB의 관리형 S3으로 내보내기와 S3에서 가져오기를 통해 당신의 능력을 전혀 망치지 마십시오.
내보내기는 테이블을 S3 버킷으로 스냅샷합니다. (how it works):
- 소스 테이블에 PITR(특정 시점 복구)이 활성화되어 있어야 합니다.
- 읽기 용량을 소비하지 않으며 테이블 성능에 영향을 미치지 않습니다. — 라이브 테이블이 아닌 연속 백업에서 읽습니다.
- DynamoDB JSON 또는 Amazon Ion 형식을 출력합니다. ( DynamoDB-JSON 와이어 형식은 S3에 포함되며, 태그를 입력하고 모두.)
- 다른 계정이 소유하고 다른 지역에 있는 S3 버킷에 쓸 수 있습니다.
- 전체 및 증분 내보내기(incremental export GA, Sept 2023)를 지원합니다.
가져오기를 통해 해당 S3 데이터에서 새로운 테이블을 구축합니다. (how it works):
- 새 테이블만으로 가져옵니다. 기존 테이블로는 가져올 수 없습니다.
- 새 테이블에서 쓰기 용량을 소비하지 않습니다.
- CSV, DynamoDB JSON 또는 Amazon Ion(선택적으로 GZIP/ZSTD 압축)을 허용합니다.
- 원본 S3 버킷은 다른 계정이나 다른 지역에 있을 수 있습니다.
- 가져오는 즉시 쿼리할 수 있는 가져올 때 보조 인덱스를 정의할 수 있습니다. 완료합니다.
이는 대규모 계정 간/지역 간 마이그레이션을 위한 가장 깨끗한 경로입니다. 특정 시점 스냅샷(라이브 데이터 아님)이 허용됩니다.
접근 방식 3: AWS 백업 복사 + 복원
이미 AWS Backup을 사용하고 있다면 계정과 지역 전체에 걸쳐 복구 지점을 복사합니다. (cross-account migration guide):
- 소스 테이블을 백업 볼트에 백업합니다.
- 대상 계정/지역의 볼트에 백업을 복사합니다.
- 대상의 새 테이블로 복원합니다.
주요 제약사항:
- 교차 계정 복사를 위해서는 두 계정이 모두 동일한 AWS 조직에 있어야 합니다.
- 복원 항상 새 테이블을 생성 — 기존 테이블 위에 복원할 수 없습니다.
- 은 기본적으로 보존됩니다(일부 또는 전체를 제외하여 저장) 복원 시간/비용); 복원 시 새 인덱스를 _추가_할 수 없습니다.
- 암호화 문제: 지역 간 복원 시 동일한 KMS 키를 유지하려면 다중 지역 키; 교차 계정의 경우 대상과 키를 공유해야 합니다. 계정. AWS 소유 및 AWS 관리 키는 공유하거나 다중 지역으로 만들 수 없습니다. (restore encryption notes).
접근 방식 4: 전역 테이블(일회성 복사가 아닌 실시간 복제)
전역 테이블은 여러 지역에 걸쳐 테이블을 복제하며 이제 선택적으로 계정 전체에도 테이블을 복제합니다. (multi-account GA, Feb 2026) — 지속적으로. 모든 복제본은 비동기식으로 읽기 및 쓰기(다중 활성)를 제공합니다. 마지막 작성자가 복제를 이긴다 (global tables docs).
이것은 "복사 후 사용" 도구가 아닙니다. 지속적인 복제입니다. 이럴 때 사용해 보세요 대상 지역이 무기한 동기화 상태를 유지하기를 원합니다(DR, 지연 시간이 짧은 로컬 읽기). 깔끔한 일회성 마이그레이션이 아닙니다. 기존 테이블 및 DynamoDB에 리전 추가 기존 데이터를 새 복제본으로 백필합니다.
운영 문제(모든 접근 방식)
- GSI는 자유롭게 다시 만들 수 없습니다. 스캔+쓰기 사본에는 색인이 포함되지 않습니다. 사용자가 정의합니다. 대상에 추가하고 별도로 백필(및 비용)합니다. 계획을 세우세요 GSI vs LSI 목적지 앞의 레이아웃; LSI는 다음과 같습니다. 테이블 생성 시 생성됨 (LSI docs).
- 용량 모드는 전송되지 않습니다. 새 테이블은 사용자가 설정한 모드로 시작됩니다. 소스가 아닙니다. 스캔+쓰기 복사본 전 쓰기 로드 추정 — 크기 대표 아이템으로 item-size calculator에 품목 수를 곱합니다. 야구장 WCU에.
- , , Auto-Scaling 및 태그는 데이터가 아닌 테이블 설정입니다 — 해당 사항 없음 복사 메소드는 이들 모두를 수행합니다. 대상에 다시 적용하십시오.
- DynamoDB JSON ≠ 일반 JSON. 내보내기 및 스캔은 유형 태그가 지정된 항목을 내보냅니다. DynamoDB-JSON; 도중에 변신을 한다면, DynamoDB JSON converter은 마샬링을 처리합니다.
- 컷오버 전 확인. 양측의 품목 수 및 무작위 검사 기록 비교 —
DescribeTable의 수는 up to six hours stale, 새로운 목표가 가능합니다. 합법적으로 0을 보고하세요.
FAQ
DynamoDB 테이블을 복사하는 AWS CLI 명령이 있습니까?
아니요. 기본 copy-table 명령은 없습니다. scan + batch-write-item를 결합하면,
또는 관리형 내보내기/가져오기 또는 AWS 백업 기능을 사용하세요.
DynamoDB 테이블을 다른 계정에 복사하려면 어떻게 해야 합니까? 세 가지 옵션: 두 계정 모두에 대한 자격 증명이 포함된 스캔+쓰기 스크립트, S3 내보내기/가져오기(버킷은 교차 계정일 수 있음) 또는 AWS 백업 복사+복원(두 계정 모두) 동일한 AWS 조직에 있어야 함).
DynamoDB 테이블을 다른 리전으로 복사하려면 어떻게 해야 합니까? S3 내보내기/가져오기와 AWS Backup은 모두 리전 간을 지원합니다. 진행 중인 지역 간 일회성 복사가 아닌 동기화를 수행하려면 대상 지역에 전역 테이블 복제본을 추가하세요.
테이블을 복사하면 해당 인덱스도 복사되나요? S3 가져오기 및 AWS 백업 복원을 사용하면 보조 인덱스를 유지/정의할 수 있습니다. 스캔+쓰기 스크립트는 그렇지 않습니다. 대상에 인덱스를 직접 생성하고 별도로 백필합니다.
기존 DynamoDB 테이블로 가져올 수 있나요? 아니요. DynamoDB의 S3 가져오기 및 AWS 백업 복원은 모두 새 테이블을 생성합니다. 병합하려면 기존 테이블에 추가하려면 스캔+쓰기 스크립트를 사용하세요.
테이블의 일부만 복사할 수 있나요? 관리되는 내보내기/가져오기 및 백업 경로는 전체 테이블 전용입니다. 하위 집합의 경우 내보내기 DynoTable(무손실 마샬링된 DynamoDB-JSON)의 필터 일치 또는 필터링된 스캔을 스크립팅한 다음 하위 집합을 대상에 씁니다.
GUI를 사용하면 컷오버가 제대로 수행됩니다. 현재 사용 중인 항목을 정확하게 무손실 내보내기로 가져옵니다. 이동한 다음 소스와 대상을 나란히 탐색하고 항목 수와 몇 가지를 확인합니다. 복사 후 샘플 기록을 작성하고 임시 점검을 실행합니다. 스캔 스크립트. DynoTable 다운로드 내보내기 및 절반의 확인을 실행합니다. 계정 및 지역 간 마이그레이션.