A Surprise AWS Bill
chrisshort.net
chrisshort.net
Presumably the author would do much better with a VM or something from OVH, they'll just shut you off or limit you before it becomes a problem (not that they would care about 30 TiB).
For someone coming from my perspective, that would be a huge and unpleasant surprise to be billed $2600 for a service that I know costs $180 elsewhere.
Edit: especially so because people keep repeating the mantra that one should use the cloud to save money by not paying for what you don't use. Obviously, my 3 Xeon servers with 64 GB RAM each are way overpowered for sending out some GB of static files, but I wanted to have a bit of redundancy. But with my setup, there should be plenty of obvious inefficiencies for "the cloud" to eliminate
=> It feels like cloud should be cheaper than my dedicated servers. But it's not, and that is the unpleasant surprise.
Seems to me S3 is more designed for highly reliable data storage. If you wanna store a bunch of data in a way that's highly reliable and resilient to hardware failures and also not have to worry about managing RAIDs and clusters of servers for the data size, S3 is just the thing, and probably priced pretty fairly.
It's also a capable and flexible service. It's possible to use it for things it isn't really designed for and have it behave pretty well. Well enough that you can mostly ignore that the other thing isn't really what it's designed around. The "mostly" is important, though. If you start hitting any extremes while using it in a different way, then you certainly can run into some pathological cases in the pricing structure and pay way too much for something that would have been cheaper in a service dedicated to that.
Looking purely at the traffic price, I believe the word choice "overcharging" is warranted if you can buy the exact same product elsewhere for 90% less.
You don't need to manage any storage to get your bill to drop, S3 can be fronted by your cached proxy (minio or just plain nginx works easily) it is trivial to setup on OVH or hetzner or any other VPS provider.
You get all the benefits of S3 without the egress bill of a major cloud
He used a CDN, just didn't read the fineprint:
“Things I should’ve known but didn’t.” Did you know that “The maximum file size Cloudflare’s CDN caches is 512MB for Free, Pro, and Business customers and 5GB for Enterprise customers.” That’s right, Cloudflare saw requests for a 13.7 GB file and sent them straight to origin every time BY DESIGN. Ouch!
It's another case of misunderstanding and misusing a tool/service in my opinion. Cloudflare (and Cloudfront) are intended to be website CDNs. Their use case is _not_ serving 13.7GB objects - and so they didn't. (Whether "passing those requests straight back to the origin every time" is a better/more customer friendly thing than " blocking those requests since they're not being caches due to an object size rule" is a good question...)
If you want "inexpensive large file hosting/serving", you don't use a combinations of "a service with 11 nines of durability" and "a web-infrastructure and website-security company, providing content-delivery-network". As you rightly point out, duct taping this together on VPS providers competing on low-cost bandwidth is the "right thing" for this use case. The gold-plating of 11 nines of durability and a CDN with over 200 globally distributed POPs almost (perhaps "should have"?) cost this guy $2.5k for "taking the easy way out without thinking through the consequences".
In my head, it's like he had a Tesla Model S in the driveway, and needed to transport 6 tons of lead bricks across town, and thought "I know, I'll just load them up on the back seat and drive 50 miles!" and then getting surprised the car needed expensive repairs afterwards.
The b/w costs are very high on the cloud , 5-6x higher than it is outside, I don’t think there any value they provide that justifies it for vast majority of users .
I am pretty skeptical on anyone at all in the world needing 11 nines of durability. You are 100’s of times more likely to have a meteor strike .
All the major service providers have gone down recently. Cloudflare went down just this month . At best they are delivering 4-5 nines practically speaking (loss of one PoP or region is still down )
CDN is exactly the service which needs to be significantly cheaper at scale, if you really need 200 PoPs then you have at minimum 10,000s of users at which and you will have consumption
If the industry’s position is they only want/can service enterprise customers for whom current pricing is within the budget, then their online pricing models/ marketing are incredibly misleading on who they are targeting .
To me it looks like their business models depends on predatory pricing prosumers y hooking them on with the ease of use.
This is very much like credit card industry. If everyone paid on time , CC providers will never make money, predatory loan pricing at 36% or higher is their real revenue source.
Paying on time / reading the ToS only lets them off the hook legally , morally they are both praying on vulnerable users .
Their cost is less than .01 cents per gb and look at their published pricing for customers.
And I’m including networking equipment as well as head count in my cost, not just the cost of pipes.
The most common services like S3, Kafka, RDS (pg and mysql), Redis should be enough to cover most use cases.
With k8s and a dedicated smart team, it would be a possible adventure.
Moreover it can work great also on-premises. Several old medium business have their own physical infrastructure and they are not yet ready to move to the cloud.
Which is what AWS is anyway...? Also, I don't think AWS' data-centers exist in isolation: https://www.datacenterdynamics.com/en/news/wikileaks-publish... Definitely not the Cloudfront PoPs which ought to be leased, surely?
Also see: https://www.tatacommunications.com/solutions/cloud/infra-dc/
And: https://www.vapor.io/vapor-io-partners-with-cloudflare-on-na...
The cloud providers, however, have a trick: they can eat these costs and make serious $$$ on the actual compute, storage and bandwidth.
If you’re trying to compete with AWS et al based on price for bandwidth etc “but with common services such as S3”, you’re gonna have a really hard time convincing a customer your expensive managed Kafka is reasonably priced. And then you’ll just find yourself competing on just VPS servers...
How much additional profit would it generate if I could cut your cloud costs by 20%?
Usually, the savings are even higher, but 20% is low enough to be easily believable, yet large enough for them to invite me to learn more.
The reason I do it manually is that many companies are afraid of the workflow interruptions usually associated with moving off the cloud. That's why I first analyze their deployment to calculate possible cost savings and then I offer them to hire me to take care of the migration. I'm pretty sure those companies would not feel comfortable switching to a different cloud by themselves.
https://aws.amazon.com/s3/faqs/#Durability_.26_Data_Protecti...
It's "Simple Storage Service", and it does that one thing (storing practically unlimited amounts of objects) spectacularly well. Like 11 nines well. It doesn't do "inexpensive egress charges" well. Amazon never claimed that though.
I think a lot of people don't care about those 11 nines, and would love to buy something with perhaps only 5 or 4 nines of durability ("Maybe I'll need to upload it again once every few years, that's cool!") but which optimises for cheap bandwidth costs instead. Right now, I think that thing is an inexpensive VPS with an unlimited traffic (Hetzner were offering "unlimited traffic at 1GB/sec for the first 20TB, then throttled to 100MB/sec" for under 10EUR/month last time I went looking. And they're well above "the bottom of the barrel" pricing in cheap VPS land.)
I worked on a project a few years back where the client were paying $10k/month as a "managed service" fee, on top of about $4k/month worth of platform at full on-demand prices. I showed the client how they could have it all running on reserved instances for Prod and spot instances for dev/staging for under $2k/month - but no, somebody had signed up for $14k+ per month just to have someone to blame/shout at 24x7 if something went wrong. (And that company was ~85% likely to call me and blame it on the app before they even bothered looking to see if the platform was working...)
But it's totally unfair to say they're "overcharging". The pricing is set up to encourage using the service properly. For example, did you know you get unlimited free (very fast) transfer between s3 <-> ec2?
You are free to use S3 however you want, but the pricing is set up such that people use a proper cdn backed by s3, do as much as they can between ec2 <-> s3, etc. instead of making s3 the backbone of their public site.
If you want to use it in a way it's not intended it will cost you more $$ which is how it should be.
That's a very charitable take. A more cynical take is that they do it to encourage lock-in. If you already have your data stored on s3, they can get away with overcharging on compute because they know that if you switched to GCP, you'll end up paying more because of the egress costs.
>but the pricing is set up such that people use a proper cdn backed by s3, do as much as they can between ec2 <-> s3, etc. instead of making s3 the backbone of their public site.
I'm not sure what your point here is. Cloudfront costs 8.5 cents per GB of egress, meanwhile ec2 costs 9 cents per GB of egress. half a cent doesn't make the egress charges any less outrageous. That's not even including the per-request charges that cloudfront has, which probably can make it cost more than 9c/GB depending on your usage profile.
Amazon's systems should have notified at least twice and required direct confirmation from the customer for their continued use.
We don't just make business decisions like this based off our self-interest. In this case, a failure to be resourceful on Amazon's part gave the customer one of two options: track everything manually minute-by-minute, or be surprised by an excessive bill.
I can actually think of possible/real workloads that would burn 2700 usd out of blue in two days and those customers would not be happy if AWS blocks their account because AWS thinks they did something wrong.
AWS Support quite often happily refunds these amounts and you don't need to post to Twitter. I've seen them refund a lot more.
Why haven't they done something to prevent this mistakes? They already refund these things, it's just those refunds is a drop in bucket compared to services that enterprise customers are paying for, and AWS engineers are busy building for them.
AWS gives you a lot of power compared to what you can do on your average hosting provider, but sadly there's also a lot of room to shoot yourself in the foot if you don't know what you are doing.
Citation needed.
Network throughput is a finite resource. And spikes from noisy neighbors could absolutely degrade throughput performance for everyone else.
So it makes perfect sense for me that part of Amazon's pricing calculus would be based not just on the cost to deliver the feature but the amount of utilization of the overall network they expect for the use cases their pricing supports.
Do you believe that little gem applies to all products and services, or do you reserve it to downplay AWS's notorious price gouging?
But I guess simply running Debian on some server and keeping that up to date just isn't cool anymore. Everyone running a blog about their dog needs Cloudflare, S3, heroku, micro services and docker. Obviously with no limit on what kind of bill they will generate should something go wrong. You can just vent on twitter and generate enough attention that the vendor will make an exception for you and pay you back to limit the negative publicity. Who wouldn't prefer that to the tedious work that is maintaining a Linux install on a server?
Now that said it looks like his job is in cloud evangelism too so I’m sure a large part is that he wants to maintain a personal account to learn/hone skills. I’d recommend anyone do that, getting a look at aws without whatever your company is doing on top of it is pretty awesome for learning. Just don’t host massive S3 images and shoot yourself in the foot ;-)
If you just host static content you don't even need to care about security updates. Just deploy a new instance, "apt install nginx", done, forget about it. I would say less work than setting it all up on AWS.
When is the last time there was an remote exploit for nginx serving static files or in Linux kernel? You dont even need to worry about security updates in this scenario.
> I’m sure a large part is that he wants to maintain a personal account to learn/hone skills.
Yeah, he seems to be responsible for OpenShift (marketing?) at Red Hat and he only learnt how expensive AWS is when he got a bill? Bit embarassing.
But yes you need to run, for example, a certbot as well to setup certificates.
so it's: apt install nginx apt install certbot certbot certonly -d your.domain -d www.your.domain # again, when you apt install certbot it installs the cron/timer automatically for automatic certificates renewly and nginx reload
Still less work than going the CDN route I would say.
It really seems to me you don't trust default linux settings and need to take care of everything and fine tune everything but you trust CDN providers thus making the CDN route less work for you. If you trust default settings of a linux distro, it's less time consuming setting it up yourself on linux. Yes that's how user-friendly it really is today.
The problem is that, at least in the case of public clouds, there’s a real risk of your bill exploding. I guess the author learned a lesson here, but I don’t think it’s the right attitude to start blaming the guy for “it makes no sense to tinker with AWS services” over here. Learning is probably one of his goals.
I wonder if a potential solution is to have two billing modes that get hardlocked at signup (or require a key or something to change): one is the standard model with alerts etc. The other is a personal model that kills all of your stuff when you go over some limit. I would feel much safer if the latter were in place.
https://docs.aws.amazon.com/awsaccountbilling/latest/aboutv2...
I do this with my startups, so why not do this with your sandbox account?
The whole article just read as a "I don't even now what I'm doing"-thing.
As for Cloudflare, hosting multi-gigabyte files is not what their service is for, I can’t see how you can blame them for having a limit on how large files they cache.
You survived the DDoS, that's great, now go see your bill.
The article doesn't use the term "piracy", but I'm curious what Microsoft's license says about public redistribution.
Some sources define piracy as redistribution outside the terms of the license. That implies that you can pirate free software, if you violate the license.
Without getting bogged down on definitions, I believe MS could issue takedown requests to anyone hosting their free trials, when the license forbids it.
That's actually what I love about these dedicated providers. Often I prefer to be surprised by cutting the service instead of a gigantic invoice. For some business-critical applications I can understand the need to have it scale (and price) accordingly, for many other use cases it is better just to have the serve switched out when the traffic limit is hit off.
I really hate long-form articles that feel the need to explain the weather, someone's clothing, or their family member's eating habits.
COME TO THE DAMN POINT. This is the Internet. 99% of content is garbage, and I'm not interested reading through pointless content-free filler that could be generated by a neural network just to find out if your article somewhere contains useful/interesting information.
My hypothesis is that the client connected to Cloudflare and performed a HTTP range request for a portion of the 13.7 GB file. For an unknown reason, Cloudflare did not preserve this range request to S3 as the origin. It transferred the entire file, returned the range requested by the client, and dropped all bytes transferred into /dev/null because it is not caching.
The end result is that Cloudflare pulled down 30 TB of data while delivering 67 GB to clients in the one month period shown in the screenshots from the blog post.
See also https://blog.vbgn.be/2019/06/20/nextcloud-cloudflare.html
What's not stated here, and the OP learned, is that requests for larger files are always passed through directly.
https://support.cloudflare.com/hc/en-us/articles/200172516-U....
So when you request the large file, the CDN (cache) doesn’t have it, so it immediately passes through to the original source. The details of how this is implemented don’t really matter in the sense that they are not going to host the large file(s) in the CDN, so they will always fall through.
It sounds like he was operating in tiny land and expected bills to be commensurate, so it just seems irrational to expect a low or free tier of another service to do this for nothing.
If you literally put a massive file on the public internet, what the actual fuck are you complaining about? The quality here is such shit.
Let's snipe at amzn, everyone hates them because they're winning, because of hn readers dependence on AWS to run their shit web apps... It's like: ope! It's been a day since we had a "amzn scammed me" post. Nevermind that the people complaining are either a) too ignorant and footgunned themselves, b) minimizing or lying about their own complicity, or c) outright scammers themselves.
> Cloudflare was the least helpful service I could have imagined given the circumstances. A long term user and on and off customer thinks they were attacked for two days and you don’t lift a finger?
> File this under, “Things I should’ve known but didn’t.” Did you know that “The maximum file size Cloudflare’s CDN caches is 512MB for Free, Pro, and Business customers and 5GB for Enterprise customers.” That’s right, Cloudflare saw requests for a 13.7 GB file and sent them straight to origin every time BY DESIGN.
I don't really see how Cloudflare has much blame here. He's an "on and off customer" which I'm guessing means currently "off". They only cache a limited number of file extensions (qcow2 isn't one of them), and it's all documented.
AWS always seems pretty generous in resolving these cases at least.
In the long term this is a brilliant plan because it helps prevent people from blacklisting the provider.
Imagine someone gets hit with $3k bill on their personal, feels wronged, goes to work and makes effort at their employer to move off AWS.
I don't know about most HN readers but I'd probably fall in this category and past places I've done work for were +$100k/month corporate bills with AWS.
How?
I cannot in good faith ever recommend a service that would take down a website with zero notice and be so uncooperative in fixing what was ultimately their fault. It cost me money for that site to be down and I had to cancel my entire day to deal with them, and if the stakes were bigger it could easily wind up costing my employer hundreds of thousands of dollars.
Sadly the world has gone in a diff direction when it comes to billing people. The rationale? Util based billing and p95 is too complicated.
It's happening in this article too: Cloudflare wasn't in the wrong here, even the bill wasn't from Cloudflare, and the author is already publicly advocating against them. I feel quite uneasy about that.
Is it possible to pay them more to increase the limit?
I mean frontend JS got out of control but I've yet to see bundle.js reach 4.8GB.
Obviously those customers have negotiated deals with the CDNs, but if there's a 5GB hard limit it sounds like Cloudflare doesn't want to compete there.
I'm not sure why I'm getting downvoted, I don't think my comment was inflammatory.
I use them on my personal site - but on the corporate side where we need TCP acceleration, edge serving of binary resources and POP presence in China - we turn back to crusty ole Akamai.
You rent a car, you don't know what the total is going to be. You go to the hospital, you don't know how much you're going to have to pay. You book a hotel and don't know the total until you check out. You go to a restaurant and even if you order just one thing and saw the exact price on the menu, that's not going to be the total. You go to the grocery store, see all the prices on the items, add them up, and then when you go pay, surprise!
I did this and it was pretty close.
Of course, they don't make any guarantees that's it accurate. But hell, it's a start.
If they couldn't provide an estimate because unexpected things happen and they can't predict all services that will be required, that'd be one thing. But they can't even provide a list like, "if you need an aspirin, that costs $X. And if you need..."
And just because they "billed" your insurance $85k doesn't mean they were actually paid $85. Billable vs allowable and all that mess.
However, if you went into the hospital and asked for the cash cost of a routine procedure they very likely would be able to give you a close approximation to what you would end up paying.
In their case it was a scheduled c-section. In any case they can at the least give you a range: min-max.
Additionally, hospitals keep very accurate track of their c-section rates, so even if they are not able to predict yours in particular, they can definitely tell you what your odds are ahead of time.
And, there are other countries and healthcare systems in which they internally take care of the stats/metrics so that they make a decent amount while you pay a reasonable amount that they tell you before you choose to get the procedure.
The hospital doesn't tell you the estimate of anything because they are afraid of the liability (or maybe just accountability).
It's just lazy or maybe too convenient, to say it can't be done. I mean if already health insurance companies can give you a fixed monthly amount to pay, then they know very well how much it's going to cost them, why not tell us?
In some ways, yes.
In other ways, it's insane that people are able to borrow 5-10x their average annual income for an item (the house) that they have very little expertise in analyzing. In that sense, it's a process that is surprising it works at all.
You spelled "profitable" wrong.
Your bank should be upfront about their lender fees, points and origination costs.
Third party fees are either fixed or a simple percentage of the sale price.
The rest can be tricky, but should not be a deal-breaker for a new homeowner. Basically you are just paying the expenses for a short while up front. Interest through the end of the month, real estate taxes through the end of the quarter, Home owners and mortgage insurance and real estate taxes for the escrow account to cover 2-3 months.
[1] https://www.ftc.gov/news-events/blogs/competition-matters/20...
The FTC article you cite is actually in favor of the type of transparency lamented by the comment you are responding to.
> The staff comment explained the risk that the latter type of transparency might harm competition by enabling competing providers to coordinate or collude on price
Where "latter type" referred to "plan structures and contracted fee schedules between health plans, hospitals, and physician service entities." (The "former type" was "actual or predicted out-of-pocket expenses, co-pays, and quality and performance comparisons of plans or providers" which is what would effect parent's experiences; the FTC "encouraged" that type of legislature.)
I don't necessarily agree with the FTC here, but their comment isn't covering the lack of information that causes consumers have no idea what the bill is until they've already incurred the bill.
Most, if not all, health plans in the US have annual out of pocket maximums on the order of $10,000 per individual.
My own experience here is driven by having gone in for what I expected to be a $50-$100 visit (a doctor took a look at my vocal chords); it was $4,000. How that is justified, I still don't know. (Thankfully, insurance covered some of it, but for such a minor visit, it was still way more expensive than I expected.) I don't know that "well, it can't be more than $10,000" is much comfort when you're walking in for something that seems minor, such as lingering effects of a cold (this example) or an infected finger (I was unable to obtain any pricing for this, prior to the visit).
A few years later, surgery would have cost me ~$300. (But that was under an HMO. And I got a quote, in advance!)
(While my initial post specifically mentioned PPOs, as that is what I'm used to, there are also those without insurance, which doesn't have the max out-of-pocket of an insurance plan.)
[1]: Given that a mere c-section (30min, super standard procedure) + 3 days at the hospital can be $85k. It's probably pretty common for hospital bills to exceed a few hundred thousands for anything more complicated or requiring a long stay at the hospital.
I think Westinghouse was the big FTC price-transparency-can-be-bad case.
That's orthogonal to the post's issue, though: he paid exactly the price he was quoted for services rendered; that he didn't understand the services he was consuming isn't really Amazon's problem but it's great they jumped in to help a $0 account (which, of course, was self-serving)...
Price fixing will only happen if there is no actual competition for customers, otherwise being the cheaper service is the easiest tool to increase your share of the market. Besides, isn’t that already the reality with prices being fixed in partnership with insurance providers?
There are simpler mechanisms for communicating price fixing - like saying "we won't be beaten on price" - that don't need to mention the price at all.
I’ve been using fixed price services (they exist) just so I don’t run into what Chris did. They aren’t evangelized as well.
In my opinion, it's a very deceiving practice that could definitely be fixed if businesses really wanted to fix it. But there's no incentive, because if you show your prices including tax and fees, they'll seem more expensive than the competition.
In the case of hotels, my experience is that with a lot of them you book online, pay the total, but then when you go check out, they've added some extra fees. Sometimes this happens before booking, you browse the options and choose based on price, but when you go check out, the total has changed because they've added not only taxes but some other fees as well. My most recent experience having this issue was with AirBnb just two days ago.
I think I'm missing something when people use the excuse of "taxes are different in different places" to say "we don't show taxes out of habit, or because it requires us to change our signs".
In Brazil, the tax rate also changes city by city, and the price shown to the customer already includes that tax (together with the state tax and the federal tax).
I deal with reputable rental companies. The rental price is based on demand but everything else is a known quantity. I’ve never had the quote priced higher than the online quote. And in a few cases I’ve had it go down by using certain credit cards or loyalty programs.
Hotels have some of this but the overall uplift is usually a lot less--at least until they start adding "resort fees" to otherwise discounted rooms.
Unless you have scripts in place to nuke everything (which you will have to develop yourself since aws doesn not supply them), you have to manually login, and try to shut things of, while bill goes chaching
The only suspense left is whether I get the compact I signed up for, or some monstrous SUV because they’re all out of more sensible options. A few hints about how bad I am at backing up anything larger than a Camry has gotten results.
The last time I booked a rental car or hotel, I paid exactly what I was quoted at booking time.
[1]: https://www.ovh.com/world/dedicated-servers/rise/rise-1/
If my blog or apps are slashdotted (or HNed or whatever we should call it nowadays) they just load slower, degrading gracefully, and never stop or return an error.
At my previous employer we migrated to them and were very happy with the VMware infra they provided.
Since It's a Swedish company one can look into their economy to see that they're not going anywhere. https://www.allabolag.se/5566479241/glesys-ab
...
> I don’t feel like archive.org should be my site’s dumping ground since it can turn a profit if it gets popular. archive.org is a stop-gap for two files for the time being.
I'm trying to understand... he has decided to burden a charity with his distribution expenses?
In this case they'd be getting stuck with a pretty big bandwidth hit.
He could donate $10 to the internet archive and they ought to be even. Way cheaper than those $2656.74
He published a 14GB file and one day there were 2700 downloads resulting in ~30 Terrabyte of traffic.
He had the file behind CloudFlare, but since CloudFlare does not cache files larger then 512MB, all the traffic went to his S3 bucket and Amazon billed him $2700 for that.
HAHAHA
https://www.cloudflare.com/terms/
2.8 Limitation on Serving Non-HTML Content
[...] Use of the Service for serving video (unless purchased separately as a Paid Service) or a disproportionate percentage of pictures, audio files, or other non-HTML content, is prohibited.
So 500MB limit or not, the author is already violating CloudFlare's terms of service.
Terns of service are also legal "CYA" documents. If CloudFlare was actually serious about that restriction, there'd be a technical limitation in place that would, for example, serve a 503.
if you look at the marketing is appears to be with out limit, now "unlimited" anything when it comes to technology should always through a red flag but CloudFlare as used this position to corner the market for CDN and DDOS services.
I think it is deceptive to hide these limits of the service deep in the ToS which they know every few people actually read
https://www.cloudflare.com/cdn/
hmmm
Took me 5 seconds to find it.
You are referring to thier DDOS service, here we are talking about the CDN Service
and clicking through about 5 pages of marketing on the CDN, including the pricing page, as well as the FAQ I see no mention of file size limits, or file type limits
Bandwidth on Oracle Cloud is $0.0085/GB with the first 10TB free each month, so this would have cost only $170. Alternatively bandwidth on Backblaze B2 costs $0.01/GB, but is free out to Cloudflare, so this traffic would have been completely free.
However it means sometimes things like this happen where a product’s incentives (serve any content at any cost) are wildly misaligned with a huge percentage of users needs (I’d rather my site, or preferably just the costly resource, be down than pay $2k).
There’s endless tuning non-enterprises can do to get our ideal behavior: but that’s the difference between pre-cloud and post-cloud computing. It used to take monumental effort to build high scale high availability systems. Your $5/mo Dreamhost site would just die under load instead of charging you thousands. Now enterprise use cases are supported by default and it takes careful tuning to opt out.
The only thing that could happen is they cap your data transfer at some point. But there are cheap VPS providers out there offering several TB of gigabit speed traffic and throttling instead of a hard cap when you reach your limit.
Point being their product was targeting me and designed appropriately. I forget the details but I know there were caps that were ample for my meager needs but would prevent this sort of accidental overage.
My point is that compute has become a commodity like electricity but without the built in fuses. My residential box can’t pull industrial amps.
I use a bunch of “freemium” services like S3 and Google Maps API and I’ve never paid a penny. I use them because they don’t cost a penny for my very limited usage, but I’m not looking forward to the day I mistakenly and disastrously exceed their free tier.
The author had an incident starting June 23rd, but didn't know about it until he got his bill July 7th, that's potentially ~14 days someone could have been abusing his account. A billing alarm would have reduced this to hours or minutes.
I would be interested how you suggest stopping a bill before it happens otherwise.. should AWS disable your website because you got posted on hacker news and now have a bill over your $10 limit? If AWS needs to stop your billing at $10, then it might need to shut down your EC2 instance and destroy your data...
If course they could offer the ability to configure the response, but if someone doesn't take the 2 minutes necessary to put a $25 billing alarm in place, what are the chances they will go through the effort of service/object based abuse policies?
At the end of the day, the issue here was that the user posted something online that people could abuse.. I don't think any CDNs cover 30 TB in free tier...
Maybe that should be an option?
Probably not a good idea for a business but if you're just using AWS to learn and otherwise fool around with, there's a good argument that it would be nice to be able to have a hard circuit breaker for at least stateless services.
I've actually heard people argue that they consider everything they put up on AWS is ephemeral so a hard circuit breaker should have the option to burn everything down but that seems like it would create its own set of problems for many people. Disabling data egress and EC2 seems as if it would go a long way towards stopping most of the unexpected bill stories.
And, yes, I'm aware of billing alarms and even setting up Lambda functions to take actions but, especially if you use S3 to host files, it would be nice to cap expenses at mostly your storage costs. I was doing some research for a very small non-profit that needs some hosted storage and I think Backblaze B2 is a better choice for them for this reason.
It should absolutely be an option.
Maybe not the default, but an option.
AWS does not do enough to prevent harm, even if a user is diligent with alarms.
Do i get now a higher liablility because the alert alerted me and i now need to be aware of it?
so i'm going on holiday and i'm fucked?
You know, a billig alert is a nice thing, its not the solution. Host a few things on AWS, tell me your endpoints and your bill just might be already in deep shit before you read your bill.
The problem is you are always fully liable!
The only reason Amazone did not charge the full price is because it's good marketing for them. I'm not sure if this also would have happened if the person would be less good connected/have gotten less visibility.
> so i'm going on holiday and i'm fucked?
That's why AWS is super problematic for any company which isn't big enough to make sure there is always someone reachable by billing alert 24/7.
A more extream case happened btw. a while ago with google serverless. Small startup with limited budged did a software error which massively increased data queries and got good publicity when they lunched and then was instant bankrupt, well except that google was also not sharing them because the bad press that would have caused.
> You know, a billig alert is a nice thing, its not the solution. Host a few things on AWS, tell me your endpoints and your bill just might be already in deep shit before you read your bill.
I agree, I'm strongly in favor of soft- and hard limits. (Per "project", with a dynamic limit of x-times of what the cost had been previous month, etc.).
YES!!!!, if you ask them to do so.
$10 is a arbitrary small amount, but what if it's a web app and we are now speaking about $1000? And tbh. for many especially young people just $100 alone is much more then they can afford.
Or better have also a option for a dynamic hard limit based on a multiplier compared to normal traffic.
Even besides private persons there is a good reason to have a hard limit for a lot of businesses (or parts of them). Especially if it's on non-essential things people don't rely on which have a limited budged. (Like a lot of things provided for marketing only.)
Heck even for payed service providers a hard limit can make sense given that it's high enough, as a form of last defense against intentional or accidental DOS like situations (I mean in times of auto-scaling some DOS situations became cost explosion situations instead).
The problem with billing alerts is that (assuming they work and get delivered in time and are set to an sensible value):
- You need to read them in time.
- You need to be able to react to them in time.
Both NOT trivial in for private persons and also small companies which just got started (or do mismanagement or are to tight on budged).
Like what happens if you get it when you are on a party? In the cinema? Asleep? In the hospital? On holiday currently outside of reception?
Somehow the idea that you will react in just a view minutes and then fix the problem, too (or shut the service down). Is a bit to optimistic.
Through yes in the given case he might have ended up with "just" a view $ in the best case or ~600 or so in the worst case. Still I think he would have been happy with service discontinuing once the price reached a view hounded $ (let's just arbitrary say 250).
Sure, you can set up billing alarms and all, but the point is, for personal hobby projects, it shouldn't be this easy to screw up.
I've used AWS extensively professionally at my current and previous 2 or 3 companies, and I've had a personal AWS account but recently decided to close it just to be safe. I actually wondered if I could just remove my billing credit card, so I contacted AWS support about it, and they said you have to have at least one primary card on there. So the only option was to close the account. I only use a mix of Digital Ocean and Netlify and Heroku for personal projects so I might as well shut down my personal AWS account just to be safe, and I did. It's just not worth keeping one open, the risk is too great.
That said, unless that spike happens in a single day, you should be able to at least set a budget alarm to warn you. I think you should also be able to trigger shutdowns from those alerts within aws, but I never did.
I can see how it would be helpful for startups though or for services that are providing a free tier to users.
What’s odd is the touch points are cold. Ticket system support, phone call back etc. it feels like it’s going to be robotic canned replies but they figured out a way to make the people on the other side smart enough to understand the issue, empowered enough to do something about it, empathetic enough to want to resolve things “fairly”.
The problem is that I was utterly unable to talk to a human at UPS. I even went to a UPS Store but they were powerless to do anything.
The thing is that Amazon's automated chat bots and so forth just kept referring me back to UPS.
As far as Amazon was considered, the package was delivered and the only option was to return it. There's tons of options for problems with a package, but nothing for "UPS stole my package". I guess they want to make it harder for people to claim that a package was stolen but I can't see why they would go so far to hide that given how prominent actual package theft is. Eventually after going through Amazon's support chat one of the responses was just a generic refund without returning the product but in the end I think that just took that money straight from the vendor for a package that UPS lost/disposed of because of a driver cutting corners to save time.
The USPS is generally rock-solid, although during the pandemic I’ve had a couple of packages show up the morning after the stated date due to the carriers being slammed (described as like Christmas but without the temporary staff).
Amazon appears to track this: after a few lost packages they never use UPS for us. They use their carriers and USPS for all sizes so I’m assuming there’s some careful price arbitrage going on.
4 years later I've yet to buy another tube.
Can't fault the customer service though.
I'm the sysadmin for a small nonprofit so my organization qualify for the $3500 yearly azure credits but the inability to set spending limits makes me not use azure. If I make a mistake or worse an admin account is compromised the azure bill is potentially infinite.
With azure I think you can mitigate the issue somewhat by having a superAdmin account without limits and set quotas for everything else but I still don't feel at ease with that.
My organization is a music festival so the infrastructure really has to work and not stop one day per year. I can keep an eye on everything during the festival and monitor spending. If things stop not during the festival people are a bit annoyed until I can look into the issue but nothing bad happens.
In a perfect world I'd like to have a way to setup a limit where you need to go through support to increase it. I'd really pay for that. I think it's really too easy to receive a nasty surprise bill.
IF your Services doesn't has a proper limit, you do make yourself suddenly liable to a much higher risk than before and you have to be aware of this.
It is the same shit when you rent a car: Do NEVER rent a Car without proper insurance.
I'm working with GCP professionally and i have used AWS in the prev company. I do ask my manager if i can use it to try a few things out and its fine but i will not put my credit card behind an account with unlimited cost risk (its limited probably but you know what i mean).
And its not even simple; Everything costs you money. Storing data, receiving data, pushing data, making api requests etc.
And what i find always quite surprising: How often people, even on hn, present simple file based apis where you can upload images and edit them or upload files and download them again or offering free services and that with AWS as a backend.
I just might be to long in this industry to see all those pitfalls of exploits and risks everywhere but i have the feeling that obvious respect against cloud service billing is neglected by most.
It's really easy to justify paying $1 for a small upgrade while you're playing. And only afterwards you notice that those $1 added up and have financially ruined you.
In the same way, $0.08 per GB (the effective price in the article) sounds really small and easy to justify. And we forget how they can accumulate...
You want to destroy a small startup with a free alpha version and AWS (or similar) backing?
Sure go ahead and send them tons of _legit_ (looking) traffic. This will first mess up their bill for this month and then mess up their statistics for the next month (when all the user they got disappear at once)...
Logistically I know this is hard for water or power, but it should be feasible for cloud computing. But I think this is an area where it’s not in AWS’ interest to set up that kind of billing control.
Which services you want to turn off or alter use of as you cross various thresholds vary, so what you probably want is a billing information services that sends alerts at configurable levels that trigger programmed actions that are more complex than a simple shutdown.
It would be easy to stop all spend at a threshold, but that means your entire set of apps stops working and all retained data (which usually has an associated periodic cost) vanishes irretrievably, which might be okay for an account being used for only toy apps but is going to be a business-ending error for any serious account
There's a good reason why cloud providers don't provide a simple “nuke your account at a particular spend threshold” option, and the fact that people who haven't thought things through think that they want such an option is actually a factor in not providing it.
If people can't keep track of spend with alerts to know that they need to take some kind of controlled restriction of services, they are going to regret unexpectedly having their whole set of services and data nuked more than an unexpectedly large bill in most cases.
I would lime quotas for individual services like “only spend $100 for EC2 and shut everything off when I hit it.”
My point is that I would rather have my stuff nuked than get a $1000 or $10k or $100k bill.
Setting up notifications and triggers is sort of possible but 1) that requires a lot of work for something that should be built in, I think; and 2) notifications aren’t in real-time so by the time I get a notification that I’ve gone over my $100 threshold I might already be at $1000.
I can compensate for this with scripts and third party services, but this would be so much easier if built in.
Unix has had disk quotas for decades right? Imagine if sysadmins left it up to users to monitor and control their usage and just charged overages. It’s so much more work for the user than when the system does it, or at least offers it.
My Linux host offers bandwidth quotas with similar cutoffs. I would never want an “unlimited “ quota where I got billed by the transfer and it was up to me to turn off. Some may want that, but not me.
Be aware that even with build-in threshold limit application will not be real time (due to parallelism, especially if multiple data-centers are involved).
But they can be much closer to real-time.
That is simply not true for every use case. We were using it for various backup jobs, until a misconfigured one racked up a big bill. This particular job was a second backup. I have no problem at all with that failing! Now I am scared to let the various engineers and consultants that make up my team use it, because I can't afford the time to check personally what they are doing.
What you want is billing alerts, so you can be notified if usage is suddenly (say) 2x usual.
While billing alerts can help you against this kind of (semi) accidental overage, it won't do anything if the account gets pwned. The first thing the pwner is going to do is turn off the billing alerts.
A hard quota that required manual reentering of the credit card number (preferably in conjunction with 2fa) would help prevent that.
Or just not set a quota on your business site, but do set a quota on your personal profile page that makes you no money.
Because that might be very quick. Maybe you've got a 100x sign up boost in your SaaS app and you're missing out on the profit of your live?
Also, what do you want to shut down? EC2 instances, which might loose you data? Maybe no new instances, but your SaaS app needs those? Shut down all traffic? Delete your S3 files? All of those could be the possible reason for exploding cost and suddenly cutting any of those could be fatal.
It doesn't matter why it's goes 100x.
If you have a limited budged you have a limited budged. Even if the tragic is "nice" you can't affort it.
First what do you scope it to: Data, CPU, API calls, one or multiple projects. This needs to be designed carefully.
Then what do you base it one: Money or the unit used (e.g. data volumen). The later is much easier.
Then how to you technical implement the trigger. With many technical solution scaled to Amazone like services it's hard to stop at an exact limit, either you do some interpolation and maybe shutdown a bit before the limit is reached or you do trigger the shutdown when the limit is reached but then slightly overshoot it.
Lastly how do you do the "shutdown" on limit.
But in the end all is quite doable. Just not trivial. But not super hard either.
Everything can have side effects in the cloud. You can set up a cheap EC2 type T feet, and without managing your cpu usage, be charged a fair amount in unlimited burst credits (which is the default for terraform for instance).
You can quickly setup a WordPress instance with cloudfront and a invalidation Plug-in and be charged 6000 USD unadvertedly (https://wordpress.org/support/topic/amazon-cloudfront-invali...)
You can set up lambda triggers and quickly do a proof of concept for an app, but forget to correctly dimension your mem usage and be charged more than you need.
Cloud requires careful policy and topology consideration. There are many simple blocks that forms a complex mesh with opaque observability of potential vulnerabilities in both access and billing. Cloud is nice but it requires time and care. And with the shared responsibility model, you are responsible for that.
Do any other (combat) veterans smell something wrong with an Air Force Tech Controller (3C2X1) making statements like ”like back in the old days, when something would go bang or boom, and I’d run towards it” in a civilian venue? You know exactly what I mean, and we see it all the time.
If you aren’t a veteran, especially with a job even remotely related to “running towards things that go boom” please just give us some space on this one. Thanks.
1. The big cloud providers charge enormously for outgoing bandwidth. Most of us know this, but unfortunately it bites people a lot. 2. If you host big files on these clouds with no limits or warnings, it's just a matter of time before this happens to you.
This is why I don't run hobby things on these clouds. Any hobby project may have backends and services running on them, but NEVER anything user-accessible such a webserver, S3/GCS bucket, or similar. It's just too much of a "click here to bankrupt me".
For a business it's a different matter. You are making money, and you're spending money to do so. You still need to have a DDoS plan for your outgoing traffic, but it's much easier to solve these problems if you have revenue. Revenue buys time and people.
On a different note, Recently I was looking to learn AWS concepts through online courses. After so much of research I finally found this e-book on Gumroad which is written by Daniel Vassallo who has worked in AWS team for 10+ years. I found this e-book very helpful as a beginner.
This book covers most of the topics that you need to learn to get started:
If someone is interested, here's the link: https://gumroad.com/a/238777459/MsVlG
I highly recommend buying this e-book if you think AWS documentation is overwhelming.
Of course it is not ideal for companies who need their services be available for all cost, but for home users it's a nice guarantee.
- AWS CloudWatch: expensive service, virtually unusable, hard to turn it off.
- AWS overall: finding and cleaning up resources is messy. The order of creating & cleanup is not same. Closing an account is a painful process. GCP Project structure is way easier.
- AWS EKS: You create a cluster, then a node group. Deleting a cluster fails if there is a node group. You go ahead to delete a node group, it complains because of "dependencies". While you're randomly looking for a "dependency" the $ clock is still ticking. You should delete the network interface before you could delete the node group, and only then the cluster. This does not sense because if the network interface was created implicitly by the node group, i should not be responsible for deleting the network interface. There should be a symmetry in create/delete operations.
- GCP GKE: You create a cluster, then delete it. Cluster gets deleted - kudos, usability much better then with AWS EKS. But it turns out lots of LoadBalancers and Firewall rules are left over and still appear on the cloud bill. Those are implicitly created and should be cleaned up implicitly by GKE.
I want them to - I do not care if my site is offline vs. having to pay a huge bill. That should be a choice.
So I moved away from AWS. It is crazy that companies agree to such a racket (not the pricing - but the fact that you cannot set a limit).
I considered to use a virtual card with a limit on it - they could not grab more than the limit and just sue me across the pound or remove my account. But I refuse to play these games with a company who does not give a shit about billing.
A good alternative to this ever-present risk is to use a dedicated virtual private server that is unmetered. This would make mistakes like this (and yes, it is a mistake - it is his fault he didn't read the cloudfare details and publicly served a large VM image) impossible.
Here is my referral code for the one I use[1]:
https://crm.vpscheap.net/aff.php?aff=15
This also (especially) applies to startups that might suddenly take off at any moment (but don't expect to.) AWS is a ticking time bomb of unexpected charges. You never know what the Internet will bring you. Go for an unmetered VPS and have 1 single well-defined charge that doesn't change. That's what I do on my side projects.
[1] I previously asked Dan, the moderator here, if I can share in this way and he said it's okay. I don't have other affiliation with that company and have found it good. The last time I posted this I got 80 visitors and no complaints (and got upvotes), so I figure it is a good resource for people.
I've checked the traffic, it was 2.3k users for entire June, like 75 user per day at average. It is effectively nothing, why author thinks it's okay to pay 1 cent per user per month to hosting provider? $5/mo VPS can handle two orders of magnitude more.
The article says they would not have helped but it doesn't say why... Maybe because it's delayed by a day?
But let's say you are:
- on holidays
- sleeping
- sick
- on a party
- etc.
Having setup alerts would still have reduced the bill.
Still assuming that something like 2h pass before you can react to an email is quite reasonable which would still have been ~150$ on the big day, which is ~6x of the normal _monthly_ cost in 2h...
And that is assuming the alerts are send real-time, which they are not.
External traffic is effectively unlimited, and a number of possible reasons (popularity, misconfigured script pulling something in a loop, someone intentionally generating traffic to hurt me) have the possibility to throw me into arbitrary amounts of debt, with the only recourse being hope that the cloud provider will be merciful.
Even if I have alerts set up: someone pulling 10 Gbit/s can generate over 100 TB per day, at $80-100 per TB. If I don't check my e-mails for weekend, I can be $30k in the hole before I notice.
But this makes it even more scary in a certain way.
I mean what if they don't waive it in your case? You have no guarantees. Only the potential to cause bad press can save you.
That is not a very healthy situation I believe.
https://www.digitalocean.com/docs/spaces/#bandwidth
Digital Ocean may not be the best cloud platform but it's fairly cost effective.
Not only AWS is very expensive but also rather hard to use and all their forms and services pretty difficult to navigate as well, it put me off the cloud hype for very long time until I actually discovered reasonably-priced* cloud providers like DigitalOcean (or linode, vultr,...) with also very easy to use platforms.
* of course still pricier than dedicated hardware/VPS, however the premium for hourly billing and infrastructure maintenance is reasonable
And the alternative is paying someone to lock you into their ecosystem.
Are we really that lazy?
- Flexible scaling.
- Using other existing services from the cloud provider.
- Not needing to manage any hardware. (Or to hire someone to manage the hardware for you).
- Running your things in a data center. (Well connected, reasonable fault tolerant.)
- Less upfront operational cost (you are not required to pay for expensive hardware upfront).
For larger companies, especially such with massive amounts of micro-services it all about the flexible scaling and not needing to manage hardware.
- that is an antifeature
- seems trivial compared to keeping up with all the cloud gotchas
- possible anyway
- sure, but you probably don't need expensive hardware to start, or go with VMs
- AWS (and other cloud providers') kickbacks
Sounds like a convoluted, time consuming scheme designed to further lock you in with the promise to recoup a fraction of AWS the tax?
And guess what, I didn't write a blog post about it. I just went to support, said remove the charges, they identified the services that created the issue so I could kill them, and they removed the charge.
Look at that, no fan fare. I had no emotion about it whatsoever. Maturity.
I'm not in my ideal financial circumstances, I just wouldn't have freaked out over that. I just would have handled it. And then blown them up in public forums if things didn't go my way. Customer support in the 21st century.
ew.
I'm not in my ideal financial circumstances, I just wouldn't have freaked out over a surprise $2000 AWS bill or a $190,000 AWS bill, fully intending not to pay it if I felt my activity did not warrant that.
There are no absolutes in guidances of behavior, only consequences. And the consequence here is potentially having your AWS account deleted in a month or two, with several remedies in between.
> Besides, some of us want to read tech drama :)
So maybe I should write a blog post about it.
https://www.reddit.com/r/aws/comments/g1ve18/i_am_charged_60...
This is another bad aspect of these stories.
Why would you need AWS or Cloudflare to serve that ?
Nice pricing AWS.
If they didn't refund him, maybe he'd jump to a different provider, maybe people would see this and not sign up for AWS in the first place, etc. By refunding him, they likely keep a customer, don't scare away other potential customers, etc.
I loathe the day when I'll have a similar problem but, as I am not a Twitter user, I won't have the luxury of getting my problems fixed.
In my anecdotal experience, just submitting a support ticket explaining what got screwed up and you made a mistake and how you’re going to rectify it so it doesn’t happen again is usually enough to get the charges refunded. And even if you don’t submit all that, often they’ll just prompt you for it.
For example, when a legacy account got compromised and rang up like $20k in charges running a bunch of servers to mine some sort of crypto, we asked for a (totally undeserved) refund and they just had us rotate all our access keys and refunded it.
The support is part of the reason why I prefer dealing with AWS. I know from my time managing over a million bucks a year in AdWords spend that the reason Google’s support is non-existent isn’t because you’re not a paying customer...
So they just waived it as it's better press.
Through I'm surprised they waved all of it, I would have expected half or so to be waved but then it doesn't really matter for them.
It seems to be pretty common not just for Amazon to be nice in case of such mesup's so that it is less likely to scare away people.
TL;DR Individual feels wronged, pushes things off AWS at their employer, AWS loses much more than $3k refund.
Glad I’m not the only one confused by this.