How to fix BackupInUseException: Backup is being used by another operation in DynamoDB

DynamoDBINTERMEDIATEMEDIUMUpdated Dec 29, 2025· 193 views

This error occurs when you attempt to perform a backup control plane operation (create, delete, or restore) on a DynamoDB backup that is already involved in another operation. Wait for the current operation to complete before retrying.

Quick fix

Fixes BackupInUseException: Backup is being used by another operation

aws dynamodb describe-backup --backup-arn arn:aws:dynamodb:region:account-id:table/table-name/backup/backup-id
  1. Check the current backup status using the AWS CLI
  2. Wait for any in-progress operations to complete
  3. Retry your operation with appropriate backoff
  4. Verify backup readiness before operations
dynamodb — error
aws dynamodb describe-backup --backup-arn arn:aws:dynamodb:region:account-id:table/table-name/backup/backup-id
BackupInUseException: Backup is being used by another operation

What this error means

The BackupInUseException error indicates that there is an ongoing conflicting backup operation on your DynamoDB backup or table. When you try to create a new backup, delete an existing backup, or restore from a backup while another operation is already in progress on the same backup, DynamoDB rejects the request to prevent data inconsistency. This typically happens because backup operations are serialized at the backup level—only one control plane operation can act on a specific backup at a time.

Typical symptoms

  • RestoreTableFromBackup, CreateBackup, or DeleteBackup API calls fail with BackupInUseException
  • AWS Management Console shows an error when attempting backup operations
  • Infrastructure-as-code tools (Terraform, CloudFormation) fail during backup-related updates
  • Backup status appears stuck or unclear in the DynamoDB console

Common causes

  1. Another restore operation is already in progress for the same backup
  2. A backup deletion is currently happening while you attempt to restore it
  3. Multiple concurrent backup creation requests are targeting the same table
  4. A previous backup operation did not complete properly and the backup is in a transitional state
  5. Rate limiting: attempting operations faster than the allowed rate (10 restore operations per second per account)

How to fix "BackupInUseException: Backup is being used by another operation"

1Check the current backup status using the AWS CLI

Use the describe-backup command to see if your backup is in a stable state:

bash
aws dynamodb describe-backup --backup-arn arn:aws:dynamodb:region:account-id:table/table-name/backup/backup-id

Look for the BackupStatus field. It should be either AVAILABLE or DELETED. If it shows CREATING or DELETING, the operation is still in progress.

2Wait for any in-progress operations to complete

If the backup status is CREATING or DELETING, wait for the operation to finish. This typically takes a few minutes. You can continue checking the status with the describe-backup command or monitor via the AWS Management Console under Backups.

3Retry your operation with appropriate backoff

Once the backup status shows AVAILABLE, retry your original operation (create, restore, or delete). If you're programmatically retrying, implement exponential backoff:

javascript
const { DynamoDBClient, RestoreTableFromBackupCommand } = require('@aws-sdk/client-dynamodb');

const client = new DynamoDBClient({ region: 'us-east-1' });

async function restoreWithRetry(backupArn, tableName, maxRetries = 5) {
  for (let attempt = 1; attempt <= maxRetries; attempt++) {
    try {
      const command = new RestoreTableFromBackupCommand({
        BackupArn: backupArn,
        TargetTableName: tableName
      });
      const response = await client.send(command);
      console.log('Restore started:', response.TableDescription.TableArn);
      return response;
    } catch (error) {
      if (error.name === 'BackupInUseException' && attempt < maxRetries) {
        const delay = Math.pow(2, attempt - 1) * 1000; // Exponential backoff
        console.log(`Attempt ${attempt} failed. Retrying in ${delay}ms...`);
        await new Promise(resolve => setTimeout(resolve, delay));
      } else {
        throw error;
      }
    }
  }
}

restoreWithRetry('arn:aws:dynamodb:region:account:table/MyTable/backup/id', 'MyTable-Restored');
4Verify backup readiness before operations

If you're performing batch operations, add a status check before each operation:

python
import boto3
import time

dynamodb = boto3.client('dynamodb')

def wait_for_backup_available(backup_arn, timeout=300):
    start_time = time.time()
    while time.time() - start_time < timeout:
        response = dynamodb.describe_backup(BackupArn=backup_arn)
        status = response['BackupDescription']['BackupDetails']['BackupStatus']
        
        if status == 'AVAILABLE':
            return True
        elif status in ['DELETED', 'CREATING', 'DELETING']:
            print(f'Backup status: {status}, waiting...')
            time.sleep(5)
        else:
            raise Exception(f'Unexpected backup status: {status}')
    
    raise TimeoutError(f'Backup did not become available within {timeout} seconds')

wait_for_backup_available('arn:aws:dynamodb:region:account:table/MyTable/backup/id')

Advanced notes

DynamoDB backup operations are subject to rate limits: CreateBackup and DeleteBackup can be called up to 50 times per second, while RestoreTableFromBackup is limited to 10 times per second per account. Additionally, DynamoDB allows up to 500 concurrent table operations (CreateTable, UpdateTable, DeleteTable, UpdateTimeToLive, RestoreTableFromBackup, and RestoreTableToPointInTime) per account. If you hit the BackupInUseException frequently during high-volume operations, consider implementing request queuing or spacing out backup operations. Note that backup operations do not consume provisioned throughput, and Point-in-Time Recovery (PITR) may be a better solution for frequent restoration scenarios as it offers per-second granularity without explicit backup management.

Frequently asked questions

What does "BackupInUseException: Backup is being used by another operation" mean?
The BackupInUseException error indicates that there is an ongoing conflicting backup operation on your DynamoDB backup or table. When you try to create a new backup, delete an existing backup, or restore from a backup while another operation is already in progress on the same backup, DynamoDB rejects the request to prevent data inconsistency. This typically happens because backup operations are serialized at the backup level—only one control plane operation can act on a specific backup at a time.
How do I fix "BackupInUseException: Backup is being used by another operation"?
This error occurs when you attempt to perform a backup control plane operation (create, delete, or restore) on a DynamoDB backup that is already involved in another operation. Wait for the current operation to complete before retrying.
What causes "BackupInUseException: Backup is being used by another operation"?
Another restore operation is already in progress for the same backup A backup deletion is currently happening while you attempt to restore it Multiple concurrent backup creation requests are targeting the same table
Is the "BackupInUseException: Backup is being used by another operation" error serious?
It is a medium-severity error — more of a blocker than a risk. The steps above resolve it.

Official resources & further reading