DynamoDB BackupNotFoundException

TL;DR — DynamoDB has no backup matching the BackupArn you supplied. Almost always a wrong or malformed ARN, a backup that was deleted or expired, or a client pointed at the wrong region/account. List the backups for the table and copy the exact ARN.

What it means

BackupNotFoundException: Backup not found for the given BackupARN.

Restore and describe calls (RestoreTableFromBackup, DescribeBackup, DeleteBackup) address a backup by its ARN. This HTTP 400 means no backup exists at that ARN in the region + account your credentials resolve to. It's client-side and not retryable until the ARN is correct.

Why it happens

  • Wrong or malformed ARN — a typo, a truncated ARN, or one hand-built rather than copied from list-backups.
  • Backup was deleted or expired — someone removed the on-demand backup, an AWS Backup lifecycle rule aged it out, or it was a SYSTEM backup (created automatically when a table with PITR enabled is deleted), which expires 35 days after creation.
  • Wrong regionlist-backups/describe-backup are regional; the backup lives in the region where it was created (the region embedded in its ARN), so a client pointed elsewhere can't see it.
  • Wrong account — the credentials resolve to a different AWS account than the one that owns the backup.
  • AWS Backup-managed recovery point — backups scheduled through AWS Backup are stored as recovery points in an AWS Backup vault, where lifecycle rules can transition or delete them; check the AWS Backup console if a backup isn't where you expect.

How to fix it

  1. List the backups for the table and grab the real ARN:
    aws dynamodb list-backups --table-name <Table> --region <r>
  2. Verify it exists and is available:
    aws dynamodb describe-backup --backup-arn <arn> --region <r>
    BackupStatus should be AVAILABLE — a backup that's mid-create/delete/restore rejects conflicting calls with BackupInUseException instead.
  3. Pin the region to the one in the backup's ARN (where the backup was created).
  4. Confirm the account with aws sts get-caller-identity.
  5. Backup taken by an AWS Backup plan? Look it up in the AWS Backup console (its vault's recovery points) — lifecycle rules there can transition or delete backups on a schedule.

Connect from DynoTable

DynoTable is a table workbench, not a backup console — use it to confirm the live table exists in the region you intend to restore into before you call RestoreTableFromBackup. Open the target region profile (⌘P), ⌘K → open the table by name, and verify the account with the credential status on the profile chip.

If restore fails with BackupNotFoundException, the ARN is wrong or expired; fix that in the AWS Backup / DynamoDB backup APIs, then come back to DynoTable to inspect the restored table schema and items. The item size calculator helps sanity-check whether a restored item shape still fits your capacity plan.

Sources

References

Last verified 2026-07-13 against the official AWS documentation linked above.

Work with DynamoDB without the Console

A fast DynamoDB desktop client that runs the real SQL DynamoDB can’t — JOINs, GROUP BY, aggregates — with visual editing and an AI agent on your own Bedrock keys.

Free 30-day trial, no credit card — then the Free plan with no time limit.