If you're running 1 box, you might have a point. If you have 100 boxes, you could pay for a couple spare boxes and still save a ton of money. If you're paying $700/mo/server for AWS and bare metal would cost you $100/mo/server, you could have a few spare metal servers and still pay a ton less. 100 servers * $700/mo = $70,000. 103 servers * $100/mo = $10,300 - the "extra" $300 is kind of a rounding error.
Even if you're running 5 servers, $700 * 5 servers = $3,500; $100 * 10 servers = $1,000. You literally have a spare server for every box in your cluster. Heck, even if you're running 1 server, $700 * 1 server = $700; $100 * 3 servers = $300. You have double the number of backup servers already online for less than half the price. Instead of running PostgreSQL, having a server go down, and then restoring from a backup to a brand new cloud box, you could literally have 2 hot standby servers and still save money.
Yes, bare metal isn't instant like the cloud - but if they're charging you 7x more than bare metal, you could literally have 2 backup servers for every 1 server and still save a ton of money. You're not paying an extra 10% or 20% for the cloud's flexibility or ease of replacement. You're many several times more for every server - to the point where you could just purchase 3x or 5x with bare metal and just have some of it laying around idle.