Cloudflare R2 has an S3 compatible API and no egress costs.
R2 still has per-request fees which, given PUTs are still $4.50/million and GETs $0.36/million (only about 10% off S3’s), they still have significant margin there to cover egress for objects of reasonable size.
One other benefit of paying up front is that I think you are less restricted on S3/Cloudfront in what you can host. I think Cloudflare has some restrictions (video files?) to keep costs more sane. Otherwise, you could spin up a YouTube clone extremely cheap.
And just to reiterate, AWS pricing can be absurd.