Renting out their retail platforms' idle capacity, Amazon started a really good thing.
Thanks to their initiative, we can now have as many computers as we want, without the overhead or frustration of purchasing, maintaining or troubleshooting them!
Quite fast to start-up and shut-down
Blazingly fast in-VM internet connectivity
Close integration with other AWS services - sometimes with free/reduced transfer costs
Ability to snapshot, image and relaunch, reproducing the exact past state of a machine
Tight security, auditing and thorough monitoring
Free tier allows you to run one EC2 instance for a complete year (no downtime)!
Having to update the security rules every time my public IP changes, in order to maintain continued access
Scarcity of useful base images below 4GB in size, hindering the efficient usage of the free storage (EBS) tier
Carefully consider the instance type you are going to deploy (hourly rate, network/disk performance, memory capacity etc). Overprovisioning and underprovisioning are both equally bad during the long run. Also try to utilize cheaper alternatives to reserved instances, such as bidding-based spot instances, for significant cost reductions
Hosting internal-use services that cannot be provisioned via serverless and other types of deployments
Performance testing of our product stacks, under exact reproducible conditions
Provisioning product demonstrations for prospective clients