AMI

Provides information to create an instance. Like a docker image

They include:
1. EBS Snapshots (Elastic Block Store)
2. template for the root volume of the instance (OS, apps, etc.)
3. Launch permissions to check which AWS Account can use AMIs to launch instances
4. Block device mappings to attach volumes.

An AMI is required to create an instance, however we can also create AMIs.
For that, we need to specify a base AMI, create the instance then save the instance configurations as a new custom AMI. So whenever we need the same configurations, we'll already have an AMI configured.
This is great because we can make changes only to the AMI and it will be replicated across all instances using the custom AMI

To create new AMI with IaC tools, we should use a packager like Packer, Ansible or Chef.
How to

Links to: EC2