AWS EBS Snapshots Automation (Disaster Recovery) from Windows PowerShell


It is always a good idea to reduce hardware dependencies by moving your data to the cloud. Cloud is much more flexible than traditional hardware infrastructure including VMWare. But you still have to consider the ability of recovering data as and when required. This always helps you to keep your business running with minimal interruption. In AWS, there are several possibilities for implementing an effective backup strategy. EBS snapshots are so simple & cost effective. You can take snapshot easily from AWS Web console, but there is no option to configure scheduled backup to automate.

Being as a Windows Administrator, Initially I used AWS Tools for Windows PowerShell (AWS SDK for .NET) to manage snapshot using PowerShell cmdlets. There are some script available to automate the snapshot process, but most of them are available for Linux environment or way too complex for me to understand. Then I decided to write one script for myself, which should fulfil following requirement.

  • Take snapshot for all volumes.
  • Can be scheduled as per defined backup strategy.
  • All snapshots must follow proper naming convention with time stamp in its description.
  • Keep the logs after finishing backup.
  • Remove old snapshots as per defined retention period.
  • Trigger one email after every successful execution of the script for taking & removing snapshot.

Finally I managed to write two separate script, one for taking snapshots and another for removing old snapshots. Also able to rotate this script to take backup as Daily, Weekly by duplicating the script and creating multiple scheduled tasks.

NOTE : I am not a pro on PowerShell, but I tried my best to write this script, and it works without any issue. As always, you can use this script at your own risk.

Continue reading