Copia uma tabela DynamoDB para outra conta/região
DynamoDB não possui nenhum comando "copiar tabela" de um clique — nem na CLI AWS, nem na console. Cada cópia é na verdade duas metades: retirar os dados da fonte e carregue-o em uma tabela de destino. A primeira metade é onde uma GUI ganha seu sustento - uma exportação verificada, filtrada e sem perdas - enquanto a segunda metade sempre roda em AWS ferramentas. Este guia cobre ambos e as dicas operacionais que afetam a produção.
Como copio uma tabela DynamoDB para outra conta ou região?
Não há comando de tabela de cópia nativo. Para a metade out, obtenha um valor sem perdas DynamoDB-JSON exportação da tabela (um clique em DynoTable, sem script) ou faça um snapshot dele com a exportação gerenciada do S3. Para a metade in, escolha o lado AWS abordagem que se encaixa: um script Scan + BatchWriteItem para pequenas cópias únicas, um script S3 exportar e importar para tabelas grandes, AWS Cópia de backup + restauração para contas cruzadas move-se com total fidelidade ou tabelas globais para replicação contínua em tempo real. Cada restaurar ou importar cria uma nova tabela.
| Situação | Melhor abordagem |
|---|---|
| Mesa pequena, única, controle total | Scan + BatchWriteItem roteiro |
| Mesa grande, pode tolerar um instantâneo | Exportação S3 → importação (cria nova tabela) |
| Entre contas/entre regiões com restauração | AWS Backup copiar + restaurar |
| Replicação ao vivo contínua (não uma cópia única) | Tabelas globais |
Nenhuma abordagem é universalmente "certa" - depende do tamanho da tabela, se você precisa de uma snapshot point-in-time ou dados em tempo real e se o destino é um novo ou existente mesa.
A metade da exportação: extraia os dados com DynoTable
Antes que qualquer restauração possa acontecer, os dados precisam sair da fonte – e um processo rolado manualmente O loop de varredura é a parte mais propensa a erros de uma pequena migração (páginas perdidas, mutiladas precisão numérica, tags de tipo removidas muito cedo). DynoTable faz isso metade em um clique:
- Sem perdas por design: exporte a correspondência completa do filtro como organizado DynamoDB-JSON — a forma de fio enrolado, que preserva grandes números (> 2⁵³) que JSON simples corrompe - ou como NDJSON/CSV quando o alvo não é DynamoDB em absoluto. Consulte exportar para CSV para obter o detalhes do formato.
- Escopo, não tudo ou nada: a exportação gerenciada do S3 captura o todo
mesa; DynoTable exporta todos os itens que sua consulta corresponde, transmitidos diretamente
de DynamoDB — então "copiar apenas os itens
TENANT#42para teste" é um filtro, não um roteiro. - Mesas grandes são bem-vindas: as exportações são separadas e executadas em segundo plano, transmitindo para disco linha por linha – um pull de vários gigabytes sobrevive às alternâncias de guias e às recargas de aplicativos.
- Verificação após o carregamento: assim que a tabela de destino estiver ativa, procure a origem e alvo lado a lado, compare a contagem de itens (tamanho da tabela e contagem de itens) e verificação pontual registros de amostra — sem escrever um script de verificação.
O limite honesto: DynoTable extrai dados fora e verifica o resultado — o carregar na tabela de destino é executado em ferramentas AWS (um script de gravação, importação S3, ou restauração de backup), abordada a seguir.
Abordagem 1: Scan + BatchWriteItem (o script)
Caminho de tecnologia mais baixa - leia todos os itens da fonte com Scan, escreva-os no
destino com BatchWriteItem. Funciona entre contas e regiões, desde que seu
script contém credenciais para ambos os lados (ou assume uma função na conta de destino).
# 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-1As pegadinhas são reais e fáceis de perder:
BatchWriteItemlimita 25 itens ou 16MB por chamada — você deve agrupar e um único a chamada pode retornar itens não processados você deve tentar novamente com espera exponencial (referência API).- As gravações consomem capacidade de gravação. Em umalvo que você atingirá
ProvisionedThroughputExceededExceptionrápido;absorve mais, mas ainda tampa cada partição em um limite rígido de 1.000 WCU / 3.000 RCU. Dimensione a carga de gravação em relação à capacidade do destino antes de começar. Scanlê a tabela inteira e mede cada item — o clássico Query-vs-Scan custo. Uma mesa grande também significa paginarLastEvaluatedKey; veja paginação.- Não atômico: Itens escritos enquanto a varredura está em andamento podem ser perdidos - você só obtenha um instantâneo consistente se a fonte estiver inativa.
Melhor para tabelas pequenas ou quando você precisa transformar/filtrar durante a cópia — e se a metade lida já existe como uma exportação empacotada DynoTable, o script é reduzido para apenas o loop chunk-and-write.
Abordagem 2: exportar para S3 e depois importar para uma nova tabela
Para tabelas grandes, a exportação gerenciada de DynamoDB para S3 mais a importação de S3 evita martelando sua capacidade.
Exportar captura instantâneos da tabela para um bucket do S3 (como funciona):
- Requer recuperação pontual (PITR) habilitada na tabela de origem.
- Não consome capacidade de leitura e não tem impacto no desempenho da tabela — ele lê backups contínuos, não a tabela ativa.
- Saídas no formato DynamoDB JSON ou Amazon Ion. (O O formato de conexão DynamoDB-JSON é o que chega ao S3, digite tags e tudo.)
- Pode gravar em um bucket S3 de propriedade de outra conta e em uma região diferente.
- Suporta exportações completas e incrementais (exportação incremental GA, setembro de 2023).
Importar e então criar uma nova tabela a partir dos dados do S3 (como funciona):
- Importa para uma apenas tabela totalmente nova — você não pode importar para uma tabela existente.
- Não consome capacidade de gravação na nova tabela.
- Aceita CSV, DynamoDB JSON ou Amazon Ion (opcionalmente compactado GZIP/ZSTD).
- O bucket S3 de origem pode estar em outra conta ou outra região.
- Você pode definir índices secundários no momento da importação, consultáveis assim que a importação completa.
Este é o caminho mais limpo para uma grande migração entre contas/regiões, onde um instantâneos pontuais (não dados em tempo real) são aceitáveis.
Abordagem 3: AWS Cópia de backup + restauração
Se você já usa AWS Backup, ele copia pontos de recuperação entre contas e regiões (guia de migração entre contas):
- Faça backup da tabela de origem em um cofre de backup.
- Copie o backup para um cofre na conta/região de destino.
- Restaure para uma nova tabela no destino.
Principais restrições:
- A cópia entre contas exige que ambas as contas estejam na mesma AWS Organização.
- Restaurar sempre cria uma nova tabela — você não pode restaurar uma tabela existente.
- são preservados por padrão (exclua alguns ou todos para salvar tempo/custo de restauração); você não pode adicionar novos índices na restauração.
- Pegadinha de criptografia: para manter a mesma chave KMS em uma restauração entre regiões, você precisa de um chave multirregional; para contas cruzadas, você deve compartilhar a chave com o alvo conta. Chaves de propriedade de AWS e gerenciadas por AWS não podem ser compartilhadas ou tornadas multirregionais (notas de criptografia de restauração).
Abordagem 4: tabelas globais (replicação ao vivo, não uma cópia única)
Tabelas globais replicam uma tabela entre regiões e agora, opcionalmente, entre contas (GA multi-contas, fevereiro de 2026) — continuamente. Qualquer réplica serve leituras e gravações (multiativas), com operações assíncronas, replicação last-writer-wins (documentos de tabelas globais).
Esta não é uma ferramenta do tipo "copiar e ir embora" — é uma replicação contínua. Use-o quando você deseja que a região de destino permaneça sincronizada indefinidamente (DR, leituras locais de baixa latência), não para uma migração única e limpa. Adicione uma região a uma tabela existente e DynamoDB preenche os dados existentes na nova réplica.
Pegadinhas operacionais (todas as abordagens)
- GSIs não são livres para recriar. Uma cópia de digitalização + gravação não carrega índices - você define eles são colocados no destino e eles preenchem (e custam) separadamente. Planeje seu GSI vs LSI layout no destino antecipadamente; LSIs só pode ser criado no momento da criação da tabela (documentos LSI).
- O modo de capacidade não é transferido. A nova tabela começa com qualquer modo que você definir, não da fonte. Estime a carga de gravação antes de uma cópia de digitalização+gravação — tamanho a item representativo com o calculadora de tamanho de item e multiplique pela contagem de itens para estimar WCUs.
- , , escalonamento automático e tags são configurações de tabela, não dados — nenhuma das os métodos de cópia carregam todos eles. Aplique-os novamente no alvo.
- DynamoDB JSON ≠ simples JSON. Exportações e varreduras emitem tags de tipo DynamoDB-JSON; se você estiver se transformando no caminho, o DynamoDB JSON converter cuida do empacotamento.
- Verifique antes da transição. Compare as contagens de itens e verifique os registros em ambos os lados —
lembrando que a contagem de
DescribeTableé até seis horas obsoletas, para que um novo alvo possa relatar legitimamente zero.
FAQ
Existe um comando CLI AWS para copiar uma tabela DynamoDB?
Não. Não existe um comando nativo copy-table. Você combina scan + batch-write-item,
ou use os recursos gerenciados de exportação/importação ou AWS Backup.
Como copio uma tabela DynamoDB para outra conta? Três opções: um script scan+write com credenciais para ambas as contas, um script S3 exportar/importar (o intervalo pode ser entre contas) ou AWS Cópia de backup + restauração (ambas as contas deve estar na mesma organização AWS).
Como copio uma tabela DynamoDB para outra região? A exportação/importação S3 e o backup AWS suportam entre regiões. Para regiões cruzadas em andamento sincronizar em vez de uma cópia única, adicione uma réplica de tabela global na região de destino.
Copiar uma tabela copia seus índices? A importação S3 e a restauração de backup AWS permitem manter/definir índices secundários; uma digitalização + gravação o script não — você mesmo cria índices no destino e eles preenchem separadamente.
Posso importar para uma tabela DynamoDB existente? Não. A importação S3 de DynamoDB e a restauração de backup de AWS criam uma nova tabela. Para mesclar em uma tabela existente, use um script scan+write.
Posso copiar apenas parte de uma tabela? Os caminhos gerenciados de exportação/importação e backup são apenas de tabela completa. Para um subconjunto, exporte a correspondência do filtro de DynoTable (sem perdas empacotadas DynamoDB-JSON) ou crie o script de uma varredura filtrada e, em seguida, grave o subconjunto no destino.
Uma GUI torna a transição sensata: extraia uma exportação sem perdas exatamente dos itens que você está em movimento, navegue na origem e no destino lado a lado, verifique a contagem de itens e alguns registros de amostra após a cópia e executar verificações ad hoc sem escrever um script de digitalização. Baixe DynoTable para executar a metade de exportação e verificação de um migração entre contas e regiões.