Latest / The Cloud Business Podcast with Fexingo: AWS, Azure, GCP, and Enterprise Infrastructure / How Cloud Bills Now Charge for Container Image Storage
Transcript
- Lucas: So, Luna, have you ever looked at a cloud bill and seen a line item for something like 'container image storage' and just assumed it was a rounding error? Luna: Honestly, I've seen those charges on our own invoices and kind of glossed over them. They always seemed too small to matter. Lucas: Right. But that's changing. The big three cloud providers — AWS, Azure, GCP — have all been quietly restructuring how they meter container image storage. And for teams running serious workloads, it's turning from a rounding error into a real line item. Luna: What's driving that shift? Is it just the usual cloud tax creep, or is there something more specific behind it? Lucas: Partly it's the usual revenue pressure, but there's also a technical angle. Images are getting bigger — we're talking machine learning frameworks, GPU drivers, large language model runtimes. A single image can now be several gigabytes. And with multi-region deployments, you're storing duplicate copies everywhere. The providers looked at that and saw an opportunity. Luna: So they're no longer treating storage as just a flat cost per gigabyte. What are they doing instead? Lucas: They're introducing tiered pricing based on image size, pull frequency, and retention. For example, AWS has started charging per gigabyte per month for ECR storage, but they've added surcharges for images that haven't been pulled in over 30 days. Azure has a similar model with Azure Container Registry, and GCP is doing the same with Artifact Registry. The nuance is in the tiers — the more you store, the higher the rate. Luna: That sounds like it could sneak up on you. Can you give me a concrete example? Lucas: Let's take a typical dev team with a 500-megabyte image. They store it in three regions for redundancy. At the old flat rate, that might have cost a few dollars a month. But now, with the tiered rates and the long-term storage surcharge, that same setup can run you closer to fifty dollars a month. It's not going to break the bank individually, but multiply that by hundreds of images across a fleet, and it adds up fast. Luna: And the pull frequency charge — that's new, right? I've seen some providers mention 'image pull metering' on their pricing pages. Lucas: Exactly. They're metering how often you pull an image down to a compute node. Each pull triggers a small charge, similar to how they now meter DNS queries or API calls. If you have an auto-scaling group that's spinning up instances frequently, those pulls can stack up. We've seen cases where a Kubernetes cluster with aggressive autoscaling racked up hundreds of dollars a month just in pull fees. Luna: So what does this mean for teams that are building on Kubernetes or serverless? Are they just stuck with these fees? Lucas: Not necessarily. There are ways to optimize. First, you can reduce your image sizes — use Alpine Linux instead of Ubuntu, remove unnecessary dependencies. Second, you can clean up old tags and untagged images. A lot of teams never delete anything, so they're paying for storage they don't actually use. Third, you can consolidate images across regions — do you really need that image in three places? Luna: That makes sense. But I imagine a lot of companies are stuck with their existing infrastructure, and renegotiating contracts is a whole other beast. Do you have any tips for that? Lucas: That's where the real conversation happens. When your cloud contract comes up for renewal, you should be looking at the storage and egress line items specifically. There's often room to negotiate volume discounts or commit to a longer term in exchange for a lower rate. And you can also push back on the pull charges — they're so new that the providers are still figuring out how to price them. We've seen some finance teams get those waived entirely just by asking. Luna: That's a good point. And speaking of the human side of this, if you're a listener who's been finding these billing breakdowns useful, I hope you're doing okay out there. Lucas: Yeah, this is a topic we come back to a lot because it affects so many people. And look, if these episodes have helped you navigate your cloud costs, a couple of dollars a month is genuinely what keeps these going — buy me a coffee dot com slash fexingo, if you've gotten something out of them. Luna: It really does make a difference. And it keeps us ad-free, which is nice. Lucas: Anyway, back to the storage fees. So we've talked about the direct costs, but there's also an indirect one that surprises people: the impact on your build pipeline. Luna: Oh, how does that work? Lucas: When you store images, you're also paying for the metadata and the layer compression. But more importantly, if you're using a managed service like AWS CodeBuild or Azure Pipelines, those builds now include image storage in their pricing. So even if you're not running production workloads, your CI/CD costs are going up too. We interviewed a DevOps engineer from a mid-sized fintech who saw their monthly bill jump by forty percent after the storage changes took effect. Luna: Forty percent is significant. Were they able to bring it back down? Lucas: They did a few things. They set up lifecycle policies to automatically delete images older than 90 days. They also started building multi-stage images that reuse layers across different services. And they moved to a single regional registry instead of replicating to four regions. That alone cut their storage costs by sixty percent. Luna: So the key takeaway is to be more deliberate about what you store and where. But how do you actually see these charges on your invoice? Are they itemized clearly? Lucas: That's the kicker — they're not always clear. AWS might label a charge as 'ECRStorage' with a usage type like 'EUC1-DataTransfer-Bytes,' which is cryptic. Azure has 'Container Registry' line items but they don't break down storage vs. pulls. So the first step is to use the cloud provider's cost explorer or third-party tools to map those charges back to specific registries and images. Luna: That sounds like a whole job in itself. Do you think cloud providers are being intentionally opaque here? Lucas: I think it's more indifference than malice. They're focused on adding new features and services, and billing is an afterthought. But the consequence is that teams without a dedicated FinOps person are at a disadvantage. That's why we keep drilling into these changes — it's a level playing field when you know what to look for. Luna: True. So for our listeners who want to get ahead of this, what's the first thing they should do this week? Lucas: Audit your container registries. List all your images, check their sizes and when they were last pulled. Delete anything that hasn't been pulled in 30 days. That's a low-effort, high-impact move. Then look at your cross-region replication setup and ask if you really need that redundancy. Luna: And if they want to renegotiate their contract, any tip on how to approach that conversation? Lucas: Go in with data. Show them your current charges and what you're willing to commit to. Cloud providers are more open to discounts when you're talking about a predictable workload. And don't forget to ask for the pull charges to be waived — that's a quick win. Luna: Good advice. It's like they're betting that you won't notice the little charges, but when you do, they're flexible. Lucas: Exactly. The sticker price is always negotiable. What's not negotiable is the necessity of staying on top of your bill. We'll be watching to see if the providers introduce more granular metering, like per-layer costs or charges for cross-region pulls. That could be the next shoe to drop. Luna: Let's hope they don't make that the default. Thanks for breaking this down, Lucas. Lucas: Anytime. We'll be back next week with another billing angle that's probably flying under your radar.