Export DynamoDB: point-in-time recovery assente

In breve — L'export su Amazon S3 (ExportTableToPointInTime) richiede il Point-in-Time Recovery (PITR) sulla tabella di origine. Se il PITR è disattivato ottieni PointInTimeRecoveryUnavailableException: Point in time recovery is not enabled for table '<name>'. Abilita il PITR, conferma che riporti ENABLED, poi richiedi l'export.

Cosa significa

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

La funzionalità di export su S3 completo e incrementale di DynamoDB legge dai backup continui PITR della tabella, non dalla capacità della tabella live. Ecco perché non consuma mai RCU e può esportare lo stato di una tabella in qualsiasi punto della finestra di recovery — ma funziona solo quando il PITR è abilitato. Niente PITR, niente export.

Perché succede

  • Il PITR non è mai stato attivato per la tabella — PointInTimeRecoveryStatus è DISABLED per impostazione predefinita su ogni nuova tabella.
  • Tabella o region errate — il TableArn dell'export punta a una tabella (o a una replica in un'altra Region) che non ha il PITR configurato.
  • Sembra simile, errore diverso — un ExportTime fuori dalla finestra PITR non genera questa eccezione; fallisce con InvalidExportTimeException. La finestra copre il tuo periodo di recovery configurato (RecoveryPeriodInDays, 1–35 giorni) e non risale mai a prima del momento in cui il PITR è stato abilitato.

Come risolverlo

  1. Abilita il PITR sulla tabella di origine — UpdateContinuousBackups con PointInTimeRecoveryEnabled: true, o attivalo nella console sotto Backups.
  2. Conferma che il PITR sia attivoDescribeContinuousBackups dovrebbe riportare PointInTimeRecoveryStatus: ENABLED. (Non confonderlo con ContinuousBackupsStatus, che è sempre ENABLED anche quando il PITR è disattivato.) Da quel momento in poi, qualsiasi punto nella finestra è esportabile.
  3. Mantieni ExportTime dentro la finestra — entro il tuo periodo di recovery configurato (fino a 35 giorni) e al momento in cui il PITR è stato abilitato o dopo; al di fuori otterrai InvalidExportTimeException. Omettilo per esportare il punto temporale corrente.
  4. Conferma i permessi IAM — il chiamante necessita di dynamodb:ExportTableToPointInTime più s3:PutObject, s3:PutObjectAcl e s3:AbortMultipartUpload sul bucket di destinazione.
  5. Punta all'ARN e alla region corretti della tabella nella richiesta di export.

Devi verificare cosa è effettivamente atterrato in S3? L'app desktop DynoTable esplora la tabella di origine ed esporta gli stessi Item come CSV, JSON o NDJSON, così hai qualcosa con cui confrontare gli oggetti su S3.

Riproducilo

Crea una tabella, lascia il PITR disattivato e richiedi un export. Il bucket non deve necessariamente esistere — il controllo sul PITR viene eseguito per primo:

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')

Output reale:

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

Due dettagli da portarti nella gestione degli errori. Il messaggio grezzo dell'SDK è solo la frase qui sopra — la forma più lunga An error occurred (PointInTimeRecoveryUnavailableException) when calling the ExportTableToPointInTime operation: … è il wrapper dell'AWS CLI e di botocore che aggiunge contesto, quindi quale dei due vedi dipende da come hai effettuato la chiamata. E la richiesta non ha mai raggiunto S3: il bucket di questa esecuzione non esiste, eppure il fallimento riguarda il PITR, quindi un refuso nel nome del bucket non emergerà finché il PITR non è attivo.

Errori correlati

Riferimenti

Ultima verifica 2026-07-13 rispetto alla documentazione ufficiale AWS collegata sopra.

Riprodotto il 2026-07-26 sul servizio DynamoDB live in us-east-1 tramite boto3 1.43.56 — l'output qui sopra è riportato alla lettera.

Lavora con DynamoDB senza la Console

Un client desktop veloce per DynamoDB che esegue il vero SQL che DynamoDB non può — JOINs, GROUP BY, aggregazioni — con modifica visuale e un agente AI sulle tue chiavi Bedrock.

Prova gratuita di 30 giorni, senza carta di credito — poi il piano Free senza limiti di tempo.