DynamoDB export — Point in time recovery is not enabled

En bref — L'export vers Amazon S3 (ExportTableToPointInTime) exige la Point-in-Time Recovery (PITR) sur la table source. Si le PITR est désactivé, tu obtiens PointInTimeRecoveryUnavailableException: Point in time recovery is not enabled for table '<name>'. Active le PITR, confirme qu'il rapporte ENABLED, puis demande l'export.

Ce que ça signifie

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

La fonctionnalité d'export vers S3 complet et incrémental de DynamoDB lit depuis les sauvegardes continues PITR de la table, pas depuis la capacité de la table en direct. C'est pourquoi elle ne consomme jamais de RCU et peut exporter l'état d'une table à n'importe quel point de la fenêtre de récupération — mais elle ne fonctionne que quand le PITR est activé. Pas de PITR, pas d'export.

Pourquoi ça arrive

  • Le PITR n'a jamais été activé pour la table — PointInTimeRecoveryStatus est DISABLED par défaut sur chaque nouvelle table.
  • Mauvaise table ou mauvaise région — le TableArn de l'export pointe vers une table (ou une réplique dans une autre Région) qui n'a pas de PITR configuré.
  • Ressemble mais erreur différente — un ExportTime hors de la fenêtre PITR ne lève pas cette exception ; il échoue avec InvalidExportTimeException. La fenêtre couvre ta période de récupération configurée (RecoveryPeriodInDays, 1 à 35 jours) et ne remonte jamais avant le moment où le PITR a été activé.

Comment le corriger

  1. Active le PITR sur la table source — UpdateContinuousBackups avec PointInTimeRecoveryEnabled: true, ou bascule-le dans la console sous Backups.
  2. Confirme que le PITR est activéDescribeContinuousBackups devrait rapporter PointInTimeRecoveryStatus: ENABLED. (Ne le confonds pas avec ContinuousBackupsStatus, qui est toujours ENABLED même quand le PITR est désactivé.) À partir de ce moment, tout point de la fenêtre est exportable.
  3. Garde ExportTime dans la fenêtre — dans ta période de récupération configurée (jusqu'à 35 jours) et au moment où le PITR a été activé ou après ; en dehors, tu obtiendras InvalidExportTimeException. Omets-le pour exporter le point actuel dans le temps.
  4. Confirme les permissions IAM — l'appelant a besoin de dynamodb:ExportTableToPointInTime plus s3:PutObject, s3:PutObjectAcl et s3:AbortMultipartUpload sur le bucket de destination.
  5. Cible le bon ARN de table et la bonne région dans la requête d'export.

Besoin de vérifier ce qui a réellement atterri dans S3 ? L'application de bureau DynoTable parcourt la table source et exporte les mêmes éléments en CSV, JSON ou NDJSON, pour que tu aies de quoi comparer avec les objets S3.

Reproduire l'erreur

Crée une table, laisse le PITR désactivé et demande un export. Le bucket n'a même pas besoin d'exister — la vérification du PITR passe en premier :

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

Sortie réelle :

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

Deux détails à reporter dans ta gestion d'erreurs. Le message brut du SDK se limite à la phrase ci-dessus — la forme plus longue An error occurred (PointInTimeRecoveryUnavailableException) when calling the ExportTableToPointInTime operation: … vient du wrapper AWS CLI/botocore qui ajoute du contexte, donc celle que tu vois dépend de la façon dont tu as appelé. Et la requête n'a jamais atteint S3 : le bucket de cette exécution n'existe pas, pourtant l'échec porte sur le PITR — une faute de frappe dans le nom du bucket ne se manifestera donc qu'une fois le PITR activé.

Erreurs liées

Références

Dernière vérification le 2026-07-13 par rapport à la documentation officielle AWS liée ci-dessus.

Reproduit le 2026-07-26 sur le service DynamoDB réel dans us-east-1 via boto3 1.43.56 — la sortie ci-dessus est reproduite telle quelle.

Travaille avec DynamoDB sans la Console

Un client de bureau rapide pour DynamoDB qui exécute le vrai SQL que DynamoDB ne peut pas — JOINs, GROUP BY, agrégations — avec édition visuelle et un agent IA sur tes propres clés Bedrock.

Essai gratuit de 30 jours, sans carte bancaire — ensuite la formule Gratuit, sans limite de durée.