I’ve hit this problem twice now. At MetaCPAN, we were looking at using S3 as a sync target for rsync from upstream CPAN — conceptually simple, except rsync wants a filesystem and S3 very much isn’t one. More recently, I wanted to mount an S3 bucket as an image cache for Buildah. Same wall. You end up writing glue code, or reaching for a FUSE driver that may or may not be production-ready, or just redesigning around the limitation.
AWS just launched S3 Files, which lets you mount an S3 bucket as an NFS filesystem on EC2, Lambda, EKS, and ECS. This is not “we bolted NFS onto S3” — the framing matters here. S3 stays the authoritative data source; the service puts a proper filesystem layer in front of it.
How the caching works
Small files (under 128 KB by default) get pulled onto high-performance EFS-backed hot storage on first access. Larger files stream directly from S3 without going through the hot tier. Untouched files auto-evict after a configurable window — 1 to 365 days, defaulting to 30.
It’s a read-through cache with NFS semantics. For workloads that need filesystem access to S3 data, that’s a genuinely clean model.
Pricing needs a close look
Hot storage runs $0.30/GB-month (USD), reads are $0.03/GB, writes $0.06/GB, with a 32 KB minimum per operation. Cold data in S3 stays at standard S3 rates (~$0.023/GB-month). The small-file minimum is the one to watch — if you have a lot of tiny files, the per-operation floor adds up fast.
For ML pipelines and agentic AI workloads with large files and sequential access patterns, the math probably works out cleanly. For something like CPAN, where the archive is millions of small distribution tarballs, I’d want to model it carefully before committing.
The “S3 is not a filesystem” thing
Corey Quinn over at Last Week in AWS pointed out that he’s been saying “S3 is not a filesystem” for a decade, and this announcement complicates that. His read — which I agree with — is that the right call here was building a real filesystem layer on top of S3 rather than trying to make S3 itself behave like one. The design preserved what S3 is good at while giving you the interface you sometimes need.
I wish this had existed two years ago. Both the MetaCPAN and Buildah cases would have been much more straightforward.
via AWS Blog and Last Week in AWS