Like all virtual appliances, the main component of an AMI is a read-only filesystem image that includes an operating system (e.g., Linux, Unix, or Windows) and any additional software required to deliver a service or a portion of it.[2]
An AMI includes the following:
A template for the root volume for the instance (for example, an operating system, an application server, and applications)
Launch permissions that control which AWS accounts can use the AMI to launch instances
A block device mapping that specifies the volumes to attach to the instance when it's launched
The AMI filesystem is compressed, encrypted, signed, split into a series of 10 MB chunks and uploaded into Amazon S3 for storage. An XML manifest file stores information about the AMI, including name, version, architecture, default kernel id, decryption key and digests for all of the filesystem chunks.
Current AMIs are available for hardware virtualized machines (HVM)[3] where the operating system is installed as it would be on real hardware. With the still available older paravirtualized virtual machines (PV),[4] an AMI did not include a kernel image, only a pointer to the default kernel id, which could be chosen from an approved list of safe kernels maintained by Amazon and its partners (e.g., Red Hat, Canonical, Microsoft). Users could choose kernels other than the default when booting an PVM AMI.[5]
Amazon has its own Linux distribution that is largely binary compatible with Red Hat Enterprise Linux.[11] This offering has been in production since September 2011, and in development since 2010.[12] The final release of the original Amazon Linux is version 2018.03[13] and uses version 4.14 of the Linux kernel. Amazon Linux 2 changed from System V init system to systemd boot.[14] It was announced in June 2018, and is updated on a regular basis.[15]
Types of images
Public: an AMI that can be used by anyone.
Paid: a for-pay AMI that is registered with Amazon DevPay and can be used by anyone who subscribes for it. DevPay allows developers to mark-up Amazon's usage fees and optionally add monthly subscription fees.
Shared: a private AMI that can only be used by Amazon EC2[16] users who are allowed access to it by the developer.