DynamoDB export — Point in time recovery is not enabled

TL;DR — La exportación a Amazon S3 (ExportTableToPointInTime) requiere recuperación en un momento dado (PITR) en la tabla de origen. Si PITR está desactivado obtienes PointInTimeRecoveryUnavailableException: Point in time recovery is not enabled for table '<name>'. Activa PITR, confirma que reporta ENABLED, y luego solicita la exportación.

Qué significa

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

La función de exportación a S3 completa e incremental de DynamoDB lee de las copias de seguridad continuas PITR de la tabla, no de la capacidad de la tabla en vivo. Por eso nunca consume RCU y puede exportar el estado de una tabla en cualquier punto de la ventana de recuperación — pero solo funciona cuando PITR está activado. Sin PITR, no hay exportación.

Por qué ocurre

  • PITR nunca se activó para la tabla — PointInTimeRecoveryStatus es DISABLED por defecto en cada tabla nueva.
  • Tabla o región incorrectas — el TableArn de la exportación apunta a una tabla (o una réplica en otra región) que no tiene PITR configurado.
  • Parece similar, error distinto — un ExportTime fuera de la ventana de PITR no lanza esta excepción; falla con InvalidExportTimeException. La ventana cubre tu periodo de recuperación configurado (RecoveryPeriodInDays, 1–35 días) y nunca alcanza más allá del momento en que se activó PITR.

Cómo solucionarlo

  1. Activa PITR en la tabla de origen — UpdateContinuousBackups con PointInTimeRecoveryEnabled: true, o actívalo en la consola bajo Backups.
  2. Confirma que PITR está activadoDescribeContinuousBackups debería reportar PointInTimeRecoveryStatus: ENABLED. (No lo confundas con ContinuousBackupsStatus, que siempre es ENABLED incluso cuando PITR está desactivado.) A partir de ese momento, cualquier punto de la ventana es exportable.
  3. Mantén ExportTime dentro de la ventana — dentro de tu periodo de recuperación configurado (hasta 35 días) y en o después del momento en que se activó PITR; fuera de él obtendrás InvalidExportTimeException. Omítelo para exportar el momento actual.
  4. Confirma los permisos de IAM — quien llama necesita dynamodb:ExportTableToPointInTime más s3:PutObject, s3:PutObjectAcl y s3:AbortMultipartUpload sobre el bucket de destino.
  5. Apunta al ARN y la región correctos de la tabla en la petición de exportación.

¿Necesitas verificar qué aterrizó realmente en S3? La aplicación de escritorio DynoTable explora la tabla de origen y exporta los mismos elementos como CSV, JSON o NDJSON, así que tienes algo con lo que comparar los objetos de S3.

Reproducirlo

Crea una tabla, deja PITR desactivado y pide una exportación. El bucket no necesita existir — la comprobación de PITR se ejecuta primero:

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

Salida real:

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

Dos detalles que conviene llevarse a tu gestión de errores. El mensaje crudo del SDK es solo la frase de arriba — la forma más larga An error occurred (PointInTimeRecoveryUnavailableException) when calling the ExportTableToPointInTime operation: … es el envoltorio del AWS CLI y de botocore añadiendo contexto, así que cuál veas depende de cómo lo hayas llamado. Y la petición nunca llegó a S3: el bucket de esta ejecución no existe y, aun así, el fallo va de PITR, así que una errata en el nombre del bucket no saldrá a la luz hasta que PITR esté activado.

Errores relacionados

Referencias

Verificado por última vez el 2026-07-13 contra la documentación oficial de AWS enlazada arriba.

Reproducido el 2026-07-26 contra el servicio DynamoDB en vivo en us-east-1 mediante boto3 1.43.56 — la salida de arriba es literal.

Trabaja con DynamoDB sin la Consola

Un cliente de escritorio rápido para DynamoDB que ejecuta el SQL real que DynamoDB no puede — JOINs, GROUP BY, agregaciones — con edición visual y un agente de IA con tus propias claves de Bedrock.

Prueba gratuita de 30 días, sin tarjeta — después, el plan Free sin límite de tiempo.