AWS Difference between a snapshot and AMI

Amazon Web-ServicesAmazon Ec2

Amazon Web-Services Problem Overview


So I am having trouble working out what, specifically is the difference between these two.

As I understand it, a snapshot is simply a backup of the disk drive, whereas the AMI is a backup of the entire system (or instance I should say), but isn't the entire system technically wholly located on the disk drive? and if that's the case then there is no clear difference and I am missing something?

Amazon Web-Services Solutions


Solution 1 - Amazon Web-Services

There are two types of AMIs (and corresponding instances):

  1. instance-store (sometimes called S3-based). These are less common and I don't recommend them for beginners. An instance-store AMI is a copy of the root instance-store volume plus some metadata, all saved in an S3 bucket in a special format

  2. EBS boot. This is probably what you are using. An EBS boot AMI is an EBS snapshot of the EBS root volume plus some metadata like the architecture, kernel, AMI name, description, block device mappings, and more.

You can take a snapshot of an EBS boot volume and turn it into an EBS boot AMI by registering it with the appropriate metadata. The trickiest part of this is specifying the correct AKI id (kernel) so that it boots correctly.

Solution 2 - Amazon Web-Services

The major difference is between the type of service referred to. A snapshot is of an EBS volume where you are able to save state and reboot with the same data at a certain point in time.

An AMI is similar, but its for the EC2 instances themselves. You cannot take a snapshot of a non ebs backed instance, but you can create a AMI (system image) of one.

Generally I use EBS snapshots as backup solutions for a database volume and I use an AMI to save instance configuration

Solution 3 - Amazon Web-Services

I was confused by that as well. Here's simplest way of understanding it:

  • EBS Snapshot very often represents a backup of specific EBS volume, it might be any volume (Root volume, data volume, etc.)

  • AMI (Amazon Machine Image) is a backup of Entire EC2 instance. For example, with proper configuration it's possible to create AMI which includes multiple EBS volumes.

Now, it might sound confusing, but they are both stored as a "EBS Snapshots".

Just think of that way:

  • EBS Snapshot is a just a data backup.
  • AMI is a representation of system state at specific time. You can also boot from it.

Solution 4 - Amazon Web-Services

EBS Volume is the underlying disk behind EC2. Snapshot is a point in time backup of specific volume while AMI is is backup of the entire EC2 instance that might have multiple attached volumes, exactly like virtual machines.

With Packer, you can build automated machine images including AMIs for EC2, VMDK/VMX files for VMware, OVF exports for VirtualBox, etc.

EC2  <-- EBS Volume (Boot) + EBS Volume 
                        ^
                        |
                     Snapshot (only of specific volume)       
                        ^
                        |
                       AMI (Combined snapshots of all volumes, snapshot must have boot volume) 
                        ^
                        | 
                  Launch a new Instance (same installed softwares and configs, different specs) 

Snapshots can be used to backup drives/volumes. It is incremental backup operation which means every time you take a snapshot of a volume, it will add only the new changes added/introduced to the volume since your last backup (not entire backup), that saves backup time, space and ultimately the cost.

Snapshots can be used in:

  • Backup drives regularly

  • Change the type of volume, for example you have traffic or reads and writes and need to increase IO operations so you change from gp2 to io1 with higher IOPs

Custom AMIs can be used in:

  • For disaster recovery in case current running EC2 instance corrupted and couldn't run for no reason.

  • Standard company's AMIs that have all installed prerequisites softwares that simplifies the process of deployment (e.g. configured to connect to `Splunk, has some monitoring and observability softwares installed, has docker installed, or it's configured to connect Puppet or Chef in startup)

  • AMIs could be used to deploy your applications in different regions easily.

  • Upgrade your server to higher or different specs with all installed softwares and their configs

  • AMIs can be publicly shared across AWS accounts.

Solution 5 - Amazon Web-Services

An AMI can be created using a snapshot. For example, using a single "snapshot" you can create multiple AMIs, say one PV and one HVM AMI using the same snapshot.

So, snapshot has the system / OS data. AMI is (snapshot + machine/hardware metadata).

Solution 6 - Amazon Web-Services

Here are few more differences between AMI and EBS Snapshots:

  1. An AMI is launchable and contains links to the root device and may contain links to snapshots of the other data volumes.

  2. The data image contained in an AMI does not represent a well-defined point-in-time, unless the instance is rebooted, something that is typically not acceptable for production environment. Snapshots can be taken in a consistent manner since their exact point-in-time can be controlled, so before the snapshot starts it can be made sure that everything is "ready for backup".

  3. An AMI can be created from existing snapshots of the root device for Linux but not for Windows.

Solution 7 - Amazon Web-Services

You can think of an AMI as a generic template for a machine with OS and installed components being preserved.

A Snapshot can include everything an AMI does, but also saves the disk data of an EBS volume.

Which one you decide to use will generally be dictated by whether your instances are EBS backed and if you want to exactly recreate a machine with all data intact or just want a generic machine template.

Solution 8 - Amazon Web-Services

As per the definition provided by AWS,

An AMI is a template from which you can start an EC2 instance. An EBS Snapshot is a block level copy of an EBS volume. The EBS volume might be a boot volume (i.e. containing an operating system), or a data-only volume (containing database files for example). You use RegisterImage to create an AMI (from a snapshot).

These are two different concepts, applied at different levels (EBS volumes vs EC2 templates) However, there are some dependencies between the two concepts.

For EBS backed EC2 instances (i.e. EC2 instances that boot from an EBS volume), the AMI is implemented as an EBS Snapshot of a boot volume + a couple of meta data (the architecture of the machine - 32 vs 64 bits -, the type of virtualization - HVM vs PV - etc ...)

So, for EBS backed EC2 instances, an AMI is an EBS snapshot + an XML file. You can even create your own AMI based on any snapshot of a boot volume you own.

Solution 9 - Amazon Web-Services

Snapshots are less expensive to use as a backup strategy, because when you have multiple snapshots, you only pay for one full backup and ther rest are, in essence, just diffs, and usually much smaller.

Solution 10 - Amazon Web-Services

I will explain this concept in Lay man words : Assume EC2 instance as PC/Laptop EBS Storage as Hardisk and AMI as the Operating System Image So ,AMI is a Amazon Machine Image and EBS Snapshot is Elastic Block storage snapshot at any movement of time.

AMI are used to launch EC2 instance newly , where as EBS snapshots you can backed up before terminating EC2 instance and can be attached to any EC2 instance for storage and retrieval purpose.

Solution 11 - Amazon Web-Services

From the definition provided by AWS it clarifies the difference - An Amazon Machine Image (AMI) is a template that contains a software configuration (for example, an operating system, an application server, and applications). From an AMI, you launch an instance, which is a copy of the AMI running as a virtual server in the cloud. Whereas for Snapshots You can back up the data on your EBS volumes to Amazon S3 by taking point-in-time snapshots. Snapshots are incremental backups, which means that only the blocks on the device that have changed after your most recent snapshot are saved. When you delete a snapshot, only the data exclusive to that snapshot is removed.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionMelbourne2991View Question on Stackoverflow
Solution 1 - Amazon Web-ServicesEric HammondView Answer on Stackoverflow
Solution 2 - Amazon Web-ServicesBrianJakovichView Answer on Stackoverflow
Solution 3 - Amazon Web-ServicesskryvetsView Answer on Stackoverflow
Solution 4 - Amazon Web-ServicesMuhammad SolimanView Answer on Stackoverflow
Solution 5 - Amazon Web-ServicesAnshu PrateekView Answer on Stackoverflow
Solution 6 - Amazon Web-ServicesOK1View Answer on Stackoverflow
Solution 7 - Amazon Web-ServicesCIGuyView Answer on Stackoverflow
Solution 8 - Amazon Web-ServicesAshish KhandelwalView Answer on Stackoverflow
Solution 9 - Amazon Web-ServicesCary GordonView Answer on Stackoverflow
Solution 10 - Amazon Web-ServicesHadoop_ExpertView Answer on Stackoverflow
Solution 11 - Amazon Web-ServicesSidharthView Answer on Stackoverflow