If the root volume of your EC2 instance got corrupt, instance won’t come up. Since you don’t have access to console of EC2 instance so you can’t do much.
In this post we will discuss options to restore an EC2 instance from snapshot backup. Prerequisite for the below guide is that you already have snapshot of the volume which you want to restore.
Option 1 – Different IP and Hostname
Easiest option to restore an EC2 instance is to launch a new instance with the available snapshot. Refer this AWS doc to launch an instance from backup.
But, an instance launched this way will have both hostname and private IP different from original instance. If this is a problem for you go to option 2.
Option 2 – Same IP different Hostname
So, as per option 1 you have created and instance with an AMI but now you need the IP to be same as old one. To go around this you can detach the network interface of old instance and attach it to new instance.
This option will give you same private IP as old one but you will still have new hostname.
If you need both hostname and IP to be same go to option 3.
Option 3 – Same IP and Hostname
In this option we will discuss how you can restore an EC2 instance and keep both hostname and IP same. This can very important if your EC2 instance is in Active Directory(AD) domain, as change in IP and hostname mapping will cause conflict in domain. Because of this conflict the domain server can block login to the EC2 instance.
Let’s see how we can get around this.
- You already have snapshot of the root and other volumes of instance.
- Keep a screenshot of your Instance description from your AWS console, this can be used to refer instance configuration later.
For the eager one’s, plan is to follow the below steps.
- Stop the instance
- Detach the current root EBS
- Create a new volume from the old snapshot
- Attach the new volume to instance
- Boot the instance
Now let’s see the steps in detail.
Stop the instance if it’s up.
Detach the current root EBS
- Select the root volume(/dev/sda1) mentioned as “Root device” from instance description and click on EBS id of the volume.
- You will now come in “Volumes” window.
- From the “Actions” drop down select “Detach Volume”
Create a new volume from the old snapshot
- Create a volume from the snapshot you have taken earlier.
- Select the snapshot of the volume and from “Actions” drop down select “Create Volume”.
- In the “Create Volume” window ensure that you select the Availability Zone to be same as the AZ in which your instance is located.
- Leave the other options as default. (refer image)
- Finally hit “Create Volume”.
Attach the new volume
- Once your volume is created select it.
- From the “Actions” drop down select “Attach”.
- While attaching the volume in the device field mention volume name as /dev/sda1 since we are attaching it as root volume. This is same as your old root volume name.
- Hit “Attach” .
- Once the volume is attached start the instance normally. You should now see that the instance has the data from your old backup. Also, it’s hostname and private IP will remain same as before.
Note:- If you want to keep the public IP to be fixed, you need to assign an Elastic IP to the instance. Public IP assigned by default, by AWS keeps on changing with every reboot.
That’s all folks!