How Do You Recover a Deleted EBS Snapshot from Recycle Bin?

Recovering an accidentally deleted Amazon Elastic Block Store snapshot is straightforward if you have configured retention rules in the AWS Recycle Bin prior to deletion. This article explains how the Recycle Bin protects your Amazon EC2 backup data, the prerequisites required for snapshot retention, and the step-by-step methods to restore deleted snapshots using either the AWS Management Console or the AWS Command Line Interface. Once restored, the snapshot returns to your active inventory and can immediately be used to create new EBS volumes.

Understanding AWS Recycle Bin for EBS Snapshots

Recycle Bin is a data recovery feature that enables you to restore accidentally deleted Amazon EBS snapshots and EBS-backed Amazon Machine Images (AMIs). When you delete a snapshot that matches an active retention rule, it bypasses immediate permanent deletion and moves to the Recycle Bin for a specified time period.

For a deleted snapshot to appear in the Recycle Bin, at least one retention rule must already be active in the same AWS Region before the deletion occurs. Retention rules can be configured in two ways:

  • Tag-level retention rules: Apply only to snapshots that have specific resource tags assigned to them.
  • Region-level retention rules: Apply to all deleted snapshots within that specific AWS Region, regardless of tags.

The retention period \(T_{\text{retention}}\) is defined in days, where \(1 \le T_{\text{retention}} \le 365\). If a snapshot is restored at time \(t < T_{\text{retention}}\), it becomes immediately available for creating EBS volumes. If \(t \ge T_{\text{retention}}\) passes without manual recovery, the snapshot is permanently purged and cannot be recovered.

Required IAM Permissions

Before attempting to view or restore a snapshot from the Recycle Bin, ensure your AWS Identity and Access Management (IAM) user or role has the necessary permissions. You need permissions to list snapshots in the Recycle Bin and to execute the restore action:

  • ec2:ListSnapshotsInRecycleBin
  • ec2:RestoreSnapshotFromRecycleBin

Here is an example IAM policy granting these permissions:

{
    "Version": "2012-10-17",
    "Statement": [
        {
            "Effect": "Allow",
            "Action": [
                "ec2:ListSnapshotsInRecycleBin",
                "ec2:RestoreSnapshotFromRecycleBin"
            ],
            "Resource": "*"
        }
    ]
}

Recovering a Snapshot Using the AWS Management Console

You can restore your deleted snapshot directly through the Amazon EC2 console by following these steps:

  1. Sign in to the AWS Management Console and open the Amazon EC2 console.
  2. Verify that you are in the correct AWS Region where the snapshot was originally located.
  3. In the left navigation pane, under Elastic Block Store, select Snapshots.
  4. In the top-right corner or within the view filter dropdown menu, switch from Owned by me to Recycle Bin (or open the dedicated Recycle Bin console at https://console.aws.amazon.com/rbin/ and select Resources).
  5. Locate and select the checkbox next to the deleted snapshot you wish to recover. You can verify the Snapshot ID, Volume ID, and Bin exit time to confirm it is the right backup.
  6. Click Actions (or Recover) at the top of the table and select Recover snapshot from Recycle Bin.
  7. When prompted in the confirmation dialog box, click Recover to finalize the restoration.

Once recovered, the snapshot disappears from the Recycle Bin view and immediately reappears in your standard Amazon EC2 Snapshots list with a status of completed.

Recovering a Snapshot Using the AWS CLI

If you prefer automating recovery or working from the terminal, you can list and restore snapshots in the Recycle Bin using the AWS CLI.

Step 1: List Deleted Snapshots in the Recycle Bin

Run the list-snapshots-in-recycle-bin command to find the Snapshot ID of the deleted resource:

aws ec2 list-snapshots-in-recycle-bin --region us-east-1

If you know the specific Snapshot ID or want to check multiple snapshots, you can pass the --snapshot-ids parameter:

aws ec2 list-snapshots-in-recycle-bin \
    --snapshot-ids snap-0123456789abcdef0 \
    --region us-east-1

The output displays metadata about the deleted snapshot, including when it entered the Recycle Bin and when it is scheduled for permanent deletion:

{
    "Snapshots": [
        {
            "SnapshotId": "snap-0123456789abcdef0",
            "RecycleBinEnterTime": "2026-11-14T08:30:00.000Z",
            "RecycleBinExitTime": "2026-11-21T08:30:00.000Z",
            "Description": "Production DB Volume Backup",
            "VolumeId": "vol-0987654321fedcba0"
        }
    ]
}

Step 2: Restore the Snapshot

Once you have confirmed the SnapshotId, run the restore-snapshot-from-recycle-bin command:

aws ec2 restore-snapshot-from-recycle-bin \
    --snapshot-id snap-0123456789abcdef0 \
    --region us-east-1

The command returns details about the restored snapshot:

{
    "SnapshotId": "snap-0123456789abcdef0",
    "OutpostArn": "",
    "Description": "Production DB Volume Backup",
    "Encrypted": true,
    "OwnerId": "123456789012",
    "Progress": "100%",
    "StartTime": "2026-11-01T12:00:00.000Z",
    "State": "completed",
    "VolumeId": "vol-0987654321fedcba0",
    "VolumeSize": 100,
    "SseType": "kms"
}

Using the Recovered Snapshot for an EC2 Instance

While a snapshot resides in the Recycle Bin, you cannot view its tags, modify its permissions, share it with other AWS accounts, or create Amazon EBS volumes from it. After restoring the snapshot from the Recycle Bin, all original tags and sharing permissions are automatically reinstated.

To restore the data to your Amazon EC2 instance after recovering the snapshot:

  1. Navigate to Elastic Block Store > Snapshots in the EC2 console.
  2. Select your newly restored snapshot and choose Actions > Create volume from snapshot.
  3. Select the exact same Availability Zone as the target EC2 instance.
  4. Once the new EBS volume state changes to available, select the volume, choose Actions > Attach volume, and attach it to your EC2 instance.