Infrastructure as a Service (IaaS)
Infrastructure as a Service (IaaS) provides customers with tools and an environment on which they can remotely provision processing, storage, networks, and other fundamental computing resources, and deploy arbitrary software, including an operating systems, middleware and applications. In other words, IaaS exposes a virtualization layer and an interface to manage the creation of virtual machines or containers and run them.
Customers do not control the underlying hardware infrastructure; the infrastructure is owned and hosted by a service provider and offered to customers on-demand.
AWS EC2 is an example for an IaaS.
AWS offers both IaaS and PaaS. For example, AWS EC2 is an IaaS whereas AWS Elastic Beanstalk is a PaaS.
PaaS allows customers to run their own software, while the PaaS provider is responsible for the infrastructure, OS and runtime environment needed to support the software.
IaaS requires the customer to deploy all of the software stack above the virtualization layer, including the operating system, middleware, runtime and applications.
Google App Engine is a PaaS, as it provides customers with a managed runtime environment in which to run their applications.