But that's apples and oranges... With AWS you get VPCs, Security Groups, NACLs, flow logs, DDoS protection (limited), public IPv4s, custom hardware to make sure you can actually use the 10/40/100Gbps pipe on your server, etc. etc. for "free" ( you only pay for those via bandwidth). The best most bare metal providers have is a firewall(security groups), and that's it.
I can get all the things you stated, including "unlimited" bandwidth for a few bucks a month if I just rent a VPS. I never understood the flocking to AWS. Does nobody like running a server anymore?
BTW you don't need to "run your own server" per se on the bare metal or VPS providers. You can auto-provision with Terraform, run Kubernetes or Nomad/Consul, etc. You have to do some work to set up your templates and the environment you will use but once it's created you can stamp out copies of it endlessly.
There are cases where AWS et. al. make sense. The bottom line is that you need to do your own spreadsheets modeling your own workload and compare costs. Include extra labor for managing your own stuff and compare it to the added costs of AWS.
What you'll often find is that AWS and such are cheaper at a small to medium scale and DIY becomes cheaper (sometimes radically so) at larger scale.
I don't like being bound to a particular machine (including indirectly via a VM) and having to manually intervene if something goes wrong with that machine. AWS auto scaling, and the equivalent feature from the other big cloud providers, frees me from that.
Just as an example: Hetzner's dedicated servers, which start around US$30/month, come with unlimited 1gbit connections (really unlimited, not "unlimited until we decide to throttle you").
If you max out that connection non-stop, you can push about 330 TB/month. The same amount of bandwidth from EC2 would cost roughly US$20,000.
Most are unlimited. But the ones where you have an actual bandwidth cap, it comes out at less than $5/TB (if we're including the machine itself), the bandwidth itself, probably less than $1/TB
Some bare metal providers have allocation based on server provisioning rather than specific egress limits. But CloudFront is cheaper with commit pricing because CF commit pricing is very very cheap and you have to factor in the cost of said reverse proxy nodes and only so much can be delivered per node. As you factor in management of the nodes it becomes even more favorable to the hyper scaler like CloudFront.
I have seen large scale deals where CloudFront comes in cheaper than what the smaller CDNs built on bare mantel can reasonably offer even with sizable commits.