DynamoDB export — Point in time recovery is not enabled

TL;DR — A exportação para o Amazon S3 (ExportTableToPointInTime) requer Point-in-Time Recovery (PITR) na tabela de origem. Se o PITR está desligado você recebe PointInTimeRecoveryUnavailableException: Point in time recovery is not enabled for table '<name>'. Habilite o PITR, confirme que ele reporta ENABLED e então solicite a exportação.

O que significa

An error occurred (PointInTimeRecoveryUnavailableException) when calling the
ExportTableToPointInTime operation: Point in time recovery is not enabled for
table 'my-dynamodb-table'

O recurso de exportação para o S3 completa e incremental do DynamoDB lê dos backups contínuos de PITR da tabela, não da capacidade da tabela ao vivo. É por isso que ele nunca consome RCUs e pode exportar o estado de uma tabela em qualquer ponto da janela de recuperação — mas ele só funciona quando o PITR está habilitado. Sem PITR, sem exportação.

Por que isso acontece

  • O PITR nunca foi ligado para a tabela — PointInTimeRecoveryStatus é DISABLED por padrão em toda tabela nova.
  • Tabela ou region errada — o TableArn da exportação aponta para uma tabela (ou uma réplica em outra Region) que não tem PITR configurado.
  • Parece similar, erro diferente — um ExportTime fora da janela de PITR não levanta esta exceção; ele falha com InvalidExportTimeException. A janela cobre seu período de recuperação configurado (RecoveryPeriodInDays, 1–35 dias) e nunca alcança antes do momento em que o PITR foi habilitado.

Como corrigir

  1. Habilite o PITR na tabela de origem — UpdateContinuousBackups com PointInTimeRecoveryEnabled: true, ou alterne-o no console em Backups.
  2. Confirme que o PITR está ligadoDescribeContinuousBackups deve reportar PointInTimeRecoveryStatus: ENABLED. (Não confunda com ContinuousBackupsStatus, que é sempre ENABLED mesmo quando o PITR está desligado.) A partir desse momento, qualquer ponto na janela é exportável.
  3. Mantenha o ExportTime dentro da janela — dentro do seu período de recuperação configurado (até 35 dias) e no momento ou após o momento em que o PITR foi habilitado; fora dele você receberá InvalidExportTimeException. Omita-o para exportar o ponto atual no tempo.
  4. Confirme as permissões IAM — o chamador precisa de dynamodb:ExportTableToPointInTime mais s3:PutObject, s3:PutObjectAcl e s3:AbortMultipartUpload no bucket de destino.
  5. Mire o ARN de tabela e a region corretos na requisição de exportação.

Precisa verificar o que de fato aterrissou no S3? O app desktop DynoTable navega pela tabela de origem e exporta os mesmos itens como CSV, JSON ou NDJSON, então você tem com o que comparar os objetos do S3.

Reproduza

Crie uma tabela, deixe o PITR desligado e peça uma exportação. O bucket não precisa existir — a verificação de PITR roda primeiro:

import boto3
ddb = boto3.client('dynamodb', region_name='us-east-1')
arn = ddb.describe_table(TableName='my-table')['Table']['TableArn']
ddb.export_table_to_point_in_time(TableArn=arn, S3Bucket='any-bucket-name')

Saída real:

PointInTimeRecoveryUnavailableException: Point in time recovery is not enabled for table 'my-table'
HTTP 400

Dois detalhes que valem levar para o seu tratamento de erros. A mensagem crua do SDK é só a frase acima — a forma mais longa An error occurred (PointInTimeRecoveryUnavailableException) when calling the ExportTableToPointInTime operation: … é a AWS CLI e o wrapper do botocore adicionando contexto, então qual delas você vê depende de como você chamou. E a requisição nunca chegou ao S3: o bucket desta execução não existe e mesmo assim a falha é sobre o PITR, então um erro de digitação no bucket só vai aparecer depois que o PITR estiver ligado.

Erros relacionados

Referências

Verificado pela última vez em 2026-07-13 contra a documentação oficial da AWS vinculada acima.

Reproduzido em 2026-07-26 no serviço DynamoDB real em us-east-1 via boto3 1.43.56 — a saída acima é literal.

Trabalhe com o DynamoDB sem o Console

Um cliente desktop rápido para DynamoDB que roda o SQL de verdade que o DynamoDB não consegue — JOINs, GROUP BY, agregações — com edição visual e um agente de IA com suas próprias chaves do Bedrock.

Teste grátis de 30 dias, sem cartão de crédito — depois o plano Grátis sem limite de tempo.