Amazon EC2 is a scalable computing system that is used to provide virtualization layers for hosting different virtual machines (such as the nova-compute project in the OpenStack ecosystem). It can communicate with other services, such as S3, Route 53, and AMI, in order to instantiate instances. Basically, you can think of EC2 as an abstraction layer above other hypervisors that are set over the virtual infrastructure manager (such as KVM and VMware). EC2 will receive the incoming API calls then will translate them into suitable calls for each hypervisor.
The Amazon Machine Image (AMI) is a packaged image system that contains the operating system and packages needed to start a virtual machine (like Glance in OpenStack). You can create your own AMI from existing virtual machines and use it when you need to replicate those machines on other infrastructures, or...