DynamoDB export — Point in time recovery is not enabled
TL;DR — Export to Amazon S3 (ExportTableToPointInTime) requires Point-in-Time Recovery (PITR) on the source table. If PITR is off you get PointInTimeRecoveryUnavailableException: Point in time recovery is not enabled for table '<name>'. Enable PITR, confirm it reports ENABLED, then request the export.
What it means
An error occurred (PointInTimeRecoveryUnavailableException) when calling the
ExportTableToPointInTime operation: Point in time recovery is not enabled for
table 'my-dynamodb-table'DynamoDB's full and incremental export to S3 feature reads from the table's PITR continuous backups, not from live table capacity. That's why it never consumes RCUs and can export a table's state at any point in the recovery window — but it only works when PITR is enabled. No PITR, no export.
Why it happens
- PITR was never turned on for the table —
PointInTimeRecoveryStatusisDISABLEDby default on every new table. - Wrong table or region — the export's
TableArnpoints at a table (or a replica in another Region) that doesn't have PITR configured. - Looks similar, different error — an
ExportTimeoutside the PITR window doesn't raise this exception; it fails withInvalidExportTimeException. The window covers your configured recovery period (RecoveryPeriodInDays, 1–35 days) and never reaches back before the moment PITR was enabled.
How to fix it
- Enable PITR on the source table —
UpdateContinuousBackupswithPointInTimeRecoveryEnabled: true, or toggle it in the console under Backups. - Confirm PITR is on —
DescribeContinuousBackupsshould reportPointInTimeRecoveryStatus: ENABLED. (Don't confuse it withContinuousBackupsStatus, which is alwaysENABLEDeven when PITR is off.) From that moment on, any point in the window is exportable. - Keep
ExportTimeinside the window — within your configured recovery period (up to 35 days) and at or after the moment PITR was enabled; outside it you'll getInvalidExportTimeException. Omit it to export the current point in time. - Confirm the IAM permissions — the caller needs
dynamodb:ExportTableToPointInTimepluss3:PutObject,s3:PutObjectAcl, ands3:AbortMultipartUploadon the destination bucket. - Target the right table ARN and region in the export request.
Need to verify what actually landed in S3? The DynoTable desktop app browses the source table and exports the same items as CSV, JSON or NDJSON, so you have something to diff the S3 objects against.
Reproduce it
Create a table, leave PITR off, and ask for an export. The bucket need not exist — the PITR check runs first:
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')Real output:
PointInTimeRecoveryUnavailableException: Point in time recovery is not enabled for table 'my-table'
HTTP 400Two details worth carrying into your error handling. The raw SDK message is just the sentence above — the longer An error occurred (PointInTimeRecoveryUnavailableException) when calling the ExportTableToPointInTime operation: … form is the AWS CLI and botocore wrapper adding context, so which one you see depends on how you called it. And the request never reached S3: the bucket in this run does not exist, yet the failure is about PITR, so a bucket typo will not surface until PITR is on.
Related errors
- BackupNotFoundException — a referenced on-demand backup ARN doesn't exist.
- ResourceNotFoundException — the table itself wasn't found.
- Learn: DynamoDB backup & PITR
References
- 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
Last verified 2026-07-13 against the official AWS documentation linked above.
Reproduced 2026-07-26 against the live DynamoDB service in us-east-1 via boto3 1.43.56 — the output above is verbatim.