Amazon S3 Got a File System - What Changes with S3 Files
Translated from the original Korean post. 한국어 원문 보기 →
S3's Oldest Sore Spot
If you've used S3 for any length of time, you've probably hit the same wall I did. It looks like files. It isn't files.
S3 is cheap, durable, and the API is clean. But the moment you try to treat it like a file system, you're stuck. No mounting. No partial writes. Changing one line in a 2GB file meant downloading the whole thing, editing it, and pushing the whole thing back.
I remember burning a lot of time on exactly this when I was designing a log archiving setup. Every team ends up at the same fork in the road: cheap S3, or EFS at several times the price because it just mounts. Object storage or file system. It was practically a religious choice.

What S3 Files Changes
S3 Files, which Amazon shipped in 2026, goes straight at that dilemma. One line: a file system interface at S3 prices.
The architecture is simple. A thin file system layer sitting on top of regular S3. The data still lives as S3 objects; there's just an extra access layer that makes it look like files. So you can mount it over NFS from EC2 and treat it like an ordinary drive. You can append to the end of a file, or patch a chunk in the middle. And you can hit the same data through the mounted file system and the S3 API at the same time.
Here's the old way:
# Classic S3: download and re-upload 1GB to add 20 bytes
response = s3.get_object(Bucket=BUCKET, Key=KEY)
existing_data = response["Body"].read()
updated_data = existing_data + b"\nOne more log line"
s3.put_object(Bucket=BUCKET, Key=KEY, Body=updated_data)
Here's the new way:
# S3 Files: just a file
with open("/mnt/s3/logs/app.log", "a") as f:
f.write("\nOne more log line")
The code diff looks trivial. Operationally it isn't. Kill the 1GB round trip you were paying to add 20 bytes and you cut network cost and failure modes at the same time.
Where It Actually Fits
Theory is easy. The real question is where this slots into a live system. A few cases I can picture immediately.
Log pipelines come to mind first. Services append straight to S3 Files, analytics tools read the same data through the S3 API. No separate log forwarder, no EFS in the middle. Log ingestion is nothing but "keep sticking things on the end," so append support lines up well with the workload.
ML datasets are similar. Park the training data in S3 Files, append new samples as they arrive, and let training jobs read it with the S3 SDK they already use. One copy of the data, two different paths in and out. That's the useful part.
Personally I think legacy app migration is the most realistic use. Take an old application that assumes a file system exists, and move it to the cloud without rewriting much of anything. Code that assumes "file paths" tends to be buried deeper than you'd expect, and converting all of it to S3 API calls is what stalls a lot of migrations. Skipping that step entirely is worth something.
Things to Watch
It isn't a cure-all. New tools invite the "oh, this solves everything" reflex, and the limits here are real.
| Item | S3 Files | EBS | EFS |
|---|---|---|---|
| Latency | High | Low | Medium |
| Price | Low | Medium | High |
| POSIX compat | Partial | Full | Full |
| Concurrent mount | Yes | No | Yes |
Latency-sensitive workloads still belong on EBS. Databases, real-time transactions, anything where a single I/O decides your response time. Object storage is still object storage underneath. Looking like a file doesn't buy you block storage latency.
Multi-writer scenarios need care too. Several instances editing the same file at once can break consistency. S3's strong consistency applies per-object-operation; it does not cover "multiple actors appending to the same file simultaneously." Design against that expecting EFS-style file locking and you'll end up chasing data corruption that's miserable to debug.
Don't skim past "Partial" in the POSIX column either. When you're migrating an old app, "it mounts fine but this one syscall blows up" is the kind of problem that surfaces at the worst possible moment.

The Cost Math Shifts
The part I find most interesting is what this does to the cost model.
The old decision was easy. "Need a file system? EFS. Expensive, but there's no alternative." Two options, not much to think about. Now there's a step in front of it: check whether S3 Files is good enough first.
The gap opens widest on workloads that write often but don't care about latency — logs, backups, archives. If that data has been living on EFS, you've been paying premium rates for a spot that never needed them. For a team moving terabytes, that can add up to real money per month.
Cost is the accumulated result of architecture decisions, so one extra option in that list matters more over time than it looks.

Quiet, but It Matters
S3 Files is not a flashy piece of technology. Strip it down and it's two existing things glued together well. No paradigm shift, no grand re-architecture.
But "obvious" improvements like this tend to land harder in practice. One constraint that used to follow you through every design session is gone. More storage options means more room to shave things down. I've seen it plenty of times on the ground: loosen one trade-off that was squeezing a decision and the whole design gets more flexible.
What I really want to know is how much EFS usage will be down a year from now.
Was this post helpful?
One click helps me write the next one