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 —
PointInTimeRecoveryStatusestDISABLEDpar défaut sur chaque nouvelle table. - Mauvaise table ou mauvaise région — le
TableArnde 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
ExportTimehors de la fenêtre PITR ne lève pas cette exception ; il échoue avecInvalidExportTimeException. 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
- Active le PITR sur la table source —
UpdateContinuousBackupsavecPointInTimeRecoveryEnabled: true, ou bascule-le dans la console sous Backups. - Confirme que le PITR est activé —
DescribeContinuousBackupsdevrait rapporterPointInTimeRecoveryStatus: ENABLED. (Ne le confonds pas avecContinuousBackupsStatus, qui est toujoursENABLEDmême quand le PITR est désactivé.) À partir de ce moment, tout point de la fenêtre est exportable. - Garde
ExportTimedans 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 obtiendrasInvalidExportTimeException. Omets-le pour exporter le point actuel dans le temps. - Confirme les permissions IAM — l'appelant a besoin de
dynamodb:ExportTableToPointInTimepluss3:PutObject,s3:PutObjectAclets3:AbortMultipartUploadsur le bucket de destination. - 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 400Deux 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
- BackupNotFoundException — un ARN de sauvegarde à la demande référencé n'existe pas.
- ResourceNotFoundException — la table elle-même est introuvable.
- Apprends : DynamoDB backup & PITR
Références
- ExportTableToPointInTime — Amazon DynamoDB API Reference
- Requesting a table export in DynamoDB — Amazon DynamoDB Developer Guide
- DynamoDB data export to Amazon S3: how it works — Amazon DynamoDB Developer Guide
- Enable point-in-time recovery in DynamoDB — Amazon DynamoDB Developer Guide
- DescribeContinuousBackups — Amazon DynamoDB API Reference
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.