awsstoragecost-estimationarchitecture

How much does it cost to run a file sharing service?

A file sharing service holding 80 TB for 50,000 users with 20 TB of monthly downloads costs about 4,006 dollars on AWS. Here is the breakdown and why tiering storage matters more than anything else.

The C3X Team··8 min read

Quick answer

A file sharing service with 50,000 users, 80 TB stored, 8 TB uploaded and 20 TB downloaded a month costs roughly 4,006 dollars a month on AWS, or about 0.080 dollars per user. Storage with intelligent tiering is 1,158 dollars and download delivery through a CDN is 1,705 dollars, so storage and delivery together are 71 percent of the bill. The metadata database is 490 dollars, the API tier 349 dollars, and virus scanning 100 dollars. Uploads are nearly free because ingress is not charged; it is what happens to the bytes afterwards that costs money.

File sharing is an unusually pure storage workload, which makes the economics legible. Bytes come in for free, sit somewhere costing money per month, and go out costing money per gigabyte. Everything else is supporting cast. The interesting decisions are all about which tier bytes sit in and how they leave.

The workload we are pricing

Assume a team file sharing product in us-east-1 with 50,000 users across 3,000 organizations. Total stored data is 80 TB across about 20 million objects. Users upload 8 TB a month and download 20 TB. There are 30 million API requests a month for listing, metadata, sharing links, and search. Every uploaded file is scanned for malware and images get thumbnails generated. Access patterns are heavily skewed: about 30 percent of data is touched in any given month and the rest is dormant.

The monthly breakdown

ComponentSpecificationMonthly cost
Download deliveryCloudFront 20 TB tiered plus 20M requests$1,705.00
Object storage80 TB intelligent tiering plus monitoring fee$1,158.00
Metadata databaseAurora 2 x db.r6g.large, 500 GB, I/O$489.60
API tier6 Fargate tasks plus ALB and LCU$349.47
Logs and audit events200 GB plus 30M object-level events$135.00
Malware scanning2M files, 1 GB Lambda, 3s average$100.00
Session cacheElastiCache cache.t4g.medium$46.72
Thumbnail generation2M Lambda invocations, 512 MB, 1s$17.00
Upload requestsAbout 1M multipart PUT requests$5.00
Total$4,005.79

Storage tiering is the biggest single decision

Storage strategyMonthly cost for 80 TB
All Standard at 0.023/GB$1,884.16
Intelligent tiering (30/45/25 split)$1,158.00
Manual lifecycle to IA at 30 daysabout $1,120
Aggressive archive for 12-month-old dataabout $840

Leaving 80 TB in the standard tier costs 1,884 dollars. Intelligent tiering, which moves objects automatically based on access and charges a small monitoring fee of 0.0025 per thousand objects, brings it to 1,158 dollars: a 726 dollar saving for a configuration flag. With 20 million objects the monitoring fee is 50 dollars, which is the one case where intelligent tiering can backfire, on buckets full of tiny files. The threshold arithmetic is inintelligent tiering explained.

Manual lifecycle rules can beat it slightly if you genuinely know your access pattern, but for a file sharing product where a user might open a two-year-old document at any moment, automatic tiering with instant retrieval is usually the right answer. What you must avoid is a tier with retrieval fees or delays: a user clicking a file and waiting minutes is a broken product, regardless of the saving.

Downloads cost, uploads do not

Eight terabytes of uploads costs about 5 dollars, all of it request fees on multipart parts. Ingress is free. Twenty terabytes of downloads costs 1,705 dollars through a CDN, or about 1,843 dollars plus request fees served directly from object storage. That asymmetry shapes product design: generous upload limits are cheap, generous download and sharing behaviour is not.

The CDN is worth it here for two reasons beyond the 10 percent rate difference. Repeated downloads of the same shared file are served from the edge, avoiding both egress and GET charges on the origin. And a popular public share link that goes viral is absorbed by the CDN rather than hammering the bucket. For workloads where every download is unique, the CDN advantage narrows considerably.

Malware scanning is a real line

Scanning 2 million uploaded files at 1 GB of Lambda memory for 3 seconds each costs 100 dollars a month, which is more than the thumbnail pipeline and the cache combined. It is also one of the easier lines to get wrong: scanning at 3 GB of memory because the scanner is slow to load triples the cost to 300 dollars. Keeping the scanner engine warm through provisioned concurrency on a small number of instances, or batching scans on a long-running container, is cheaper at this volume than paying cold-start memory time on every file.

Metadata is heavier than people expect

Twenty million objects need a metadata row each, plus sharing permissions, version history, and folder structure. At 490 dollars, the Aurora cluster is 12 percent of the bill, and it is the line that fails first under growth: listing a folder with 50,000 items, or resolving permissions for a deeply nested share, are expensive queries. This is the part of a file sharing service that needs the most engineering attention and the part that costs the most to fix later.

Unit economics

MetricValue
Cost per user per month$0.080
Cost per GB stored per month$0.0141 (storage only)
Cost per GB downloaded$0.083
Storage per user1.6 GB

Eight cents per user against a product priced at, say, 6 dollars per seat is 1.3 percent of revenue. The risk is the distribution: a handful of organizations storing terabytes and downloading constantly can cost 50 times the average user. Per-tenant cost tracking and fair-use limits matter more here than in most products. Price the storage and delivery path from Terraform against theresource catalog, and set the lifecycle rules before the bucket fills, not after.

FAQ

How much does it cost to run a file sharing service?

About 4,006 dollars a month on AWS for 50,000 users with 80 TB stored across 20 million objects, 8 TB uploaded and 20 TB downloaded monthly, plus 30 million API requests, malware scanning, and thumbnail generation. That is roughly 0.080 dollars per user per month. Storage and download delivery together are 71 percent of the bill.

Do uploads or downloads cost more?

Downloads, by a wide margin. Eight terabytes of uploads costs about 5 dollars, all of it multipart request fees, because ingress is not charged. Twenty terabytes of downloads costs 1,705 dollars through a CDN or about 1,843 dollars served directly from object storage. That asymmetry means generous upload limits are cheap while generous sharing and download behaviour is expensive.

How much does storage tiering save on a file sharing service?

About 726 dollars a month on 80 TB. Leaving everything in the standard tier costs 1,884 dollars; intelligent tiering with a typical 30/45/25 split across frequent, infrequent, and archive-instant tiers costs 1,158 dollars including the monitoring fee. With 20 million objects that monitoring fee is 50 dollars, which is the one case where tiering can backfire, on buckets full of very small files.

What does malware scanning cost for uploaded files?

About 100 dollars a month for 2 million files scanned at 1 GB of Lambda memory for 3 seconds each, which is more than the thumbnail pipeline and session cache combined. It scales badly if the scanner needs more memory: running at 3 GB triples it to 300 dollars. Keeping the scanner warm or batching scans on a long-running container is cheaper than paying cold-start memory time per file.

Why is the metadata database a significant cost?

Because 20 million objects need a metadata row each plus sharing permissions, version history, and folder structure. At 490 dollars the Aurora cluster is 12 percent of the bill, and it is the component that degrades first under growth: listing a folder with 50,000 items or resolving permissions on a deeply nested share are expensive queries. It is the part of the service that costs the most to fix later.

How does C3X help price a storage-heavy service?

C3X reads your Terraform and prices buckets, lifecycle configurations, CDN distributions, database clusters, and compute against a live catalog. For a file sharing service the storage class and lifecycle rules set in Terraform are directly responsible for the largest line on the bill, so seeing their cost implication in the pull request is where the tiering decision belongs.

What to do next

Set your lifecycle rules before the bucket fills. C3X reads your Terraform and prices your resources against a live catalog. Start with the quickstart.

Try C3X on your own Terraform

Free and open source. No API key required. One command to install, one command to estimate.