Are we seriously
I work at a major vendor, won't say which but I am also doing cloud Certs etc. - basically hedging my bets :)
The first thing is that it is nearly impossible to control spend in cloud. Almost all services which are reliant on each other cost money but even if they say what they are at point of ordering, it can be hard to quantify, hard to design and you're devs and admins need to be super aware of this to minimise things like cloudfront, inter-AZ, and inter-region. In fact many of the most useful features involve traversing the AZs and regions to get the benefit of being there in the first place. Imagine what the Data Transfer line item looks like on the example above's bill! Also, why would you choose to pay for inter-site traffic, that's not a metric a lot of people in my experience measure, so they don't even consider it.
Secondly is the bespoke stuff - AWS / Azure etc. can and do remove services regularly. This means, you could have a business service reliant on a service or function which won't be there any longer. We all know how easy it is to get the buy-in, start a project to rewrite an application and get that completed, tested and deployed before the timer runs out, right? No overruns on that project.
Thirdly, the training for the AWS solution architect cert, talks about almost all of the applications as scaling, growing app types which are suited to running in Cloud. There is no talk about the average run of the mill business application which works just as well (or better, nearer to the users) off cloud than it does in public.
I could go on but for now, lastly, is the resilience. None of the supposed resilience means anything when this exists in their terms and condistions:
Microsoft: "The following responsibilities are always retained by you: Data, Endpoints"
Google: "Warranty - We provide our services using reasonable skill and care. We don't make any other commitments about our services ... (including the content in the services)."
AWS: “Because AWS customers retain ownership and control over their content within the AWS environment, they also retain responsibilities relating to the security of that content". “customers retain control of what security they choose to implement to protect their own content, applications, systems and networks – no differently than they would for applications in an on-site data center.”
To summarise, any part of any cloud service could fail and they will not take responsibility, your backups, site links, a whole AZ, core service, links between their own services controlling which parts of your app are active etc. At least if you design the service in an On-Prem or hosted DC, you design the service you need, create the resilience you need and don't pay through the nose for a load of stuff you don't really need.