s3fs

A Pythonic filesystem interface over Amazon S3, built on fsspec and aiobotocore

SDK
PyPI
v2026.9.0
1,044 stars
BSD 3-Clause License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum. How we score it →
65 /100 Good
Development Activity 68
Maintenance 24
Community 80
Maturity 60
Momentum 28

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation. How we score it →
68 /100 Good
Architecture 72
Code Quality 70
Innovation 62
Learning Curve 68

s3fs gives Python code a familiar filesystem-style API (ls, open, glob, walk, du, and more) over S3 buckets, so tools built for local files or the fsspec abstraction — pandas, Dask, PyArrow, Zarr — can read and write S3 objects with no S3-specific code of their own. It’s built directly on top of aiobotocore for async S3 calls and implements fsspec’s AbstractFileSystem interface, which is what lets it slot transparently into any library that already speaks fsspec’s protocol (s3://bucket/key paths work anywhere a local path would).

Maintained under the fsspec GitHub organization alongside gcsfs and other cloud filesystem implementations, s3fs is the de facto standard way Python data tooling accesses S3 without each project reimplementing pagination, multipart upload, or credential handling against boto3 directly.

What You Get

  • An S3FileSystem class implementing fsspec’s AbstractFileSystem — ls, open, glob, walk, exists, info, du, rm, and more against S3 buckets
  • File-like objects for streaming reads/writes, including multipart upload handling for large files without loading them fully into memory
  • Async-native S3 operations via aiobotocore, with a synchronous-looking API that fsspec bridges for non-async callers
  • Caching support (fsspec’s directory/file caching layers) to reduce repeated S3 list/head calls
  • Credential handling that follows standard AWS resolution (profiles, environment variables, IAM roles) via boto3/botocore conventions
  • A mapping.py module exposing a MutableMapping-style key-value interface over S3, used by libraries like Zarr for chunked array storage

Common Use Cases

  • Reading and writing pandas DataFrames or Dask datasets directly from s3://bucket/path URLs without manually calling boto3
  • Backing Zarr or other chunked-array storage formats with S3 as the storage layer via s3fs’s mapping interface
  • Building data pipelines and ETL scripts that need filesystem-style glob/walk semantics over S3 prefixes instead of manually paginating list_objects_v2 calls

Under The Hood

Architecture: The bulk of the implementation lives in s3fs/core.py (roughly 2,900 lines), which defines S3FileSystem (the fsspec filesystem implementation) and S3File (the file-like object returned by open()), wrapping aiobotocore’s async S3 client calls behind fsspec’s sync/async bridging layer. errors.py translates raw botocore/AWS exceptions into Python’s standard OSError family (FileNotFoundError, PermissionError) so callers can handle S3 errors the same way they’d handle local filesystem errors. mapping.py is a thin adapter exposing S3 as a MutableMapping, used by chunked-storage libraries like Zarr.

Tech Stack: Pure Python, with a hard dependency on fsspec (pinned to a matching release), aiobotocore for async AWS API calls, and aiohttp for the underlying HTTP transport. Because aiobotocore vendors a specific botocore version, s3fs’s own version is tightly coupled to compatible fsspec/aiobotocore release pairs, which the pinned requirements.txt enforces.

Code Quality: The test suite (test_s3fs.py, test_mapping.py, test_custom_error_handler.py, plus a derived/ directory) runs against moto (mocked AWS) and/or real S3-compatible endpoints in CI, covering multipart upload edge cases, error translation, and the mapping interface. With 158 contributors and continuous maintenance from the fsspec org, the project shows active, if occasionally version-pinning-sensitive, development — a known pain point users hit is aiobotocore/botocore/fsspec version skew, which the errors module and strict pinning are designed to guard against.

API Design: The primary entry point (S3FileSystem() plus fsspec’s generic fsspec.open('s3://...')) requires zero S3-specific knowledge if a caller already knows the standard Python file API — open(), read(), write() all work as expected. Advanced options (custom endpoints for S3-compatible stores like MinIO, requester-pays buckets, ACLs) are exposed as keyword arguments rather than requiring subclassing, keeping the common case simple while still supporting non-AWS S3-compatible backends.

Used by 6 apps in this directory

Python
47%
Other

Airbyte

Data Engineering · Developer Tools

22,143

Open-source ELT platform with 600+ connectors for moving data from any source to warehouses, lakes, and AI agents.

View details
95
Repo Health
80
Technical
67
Dependency
Built with
Python 47%
Kotlin 43%
Updated 5 days ago
Python
89%
Apache 2.0

Apache Airflow

Data Engineering

46,995

Define, schedule, and monitor complex data workflows as Python code — with a powerful UI, 80+ provider integrations, and battle-tested scalability across thousands of production deployments.

View details
96
Repo Health
89
Technical
64
Dependency
Built with
Python 89%
Updated 5 days ago
C++
68%
Apache 2.0

ClickHouse

Analytics · Data Engineering · Databases

50,116

Open-source column-oriented database that delivers real-time analytical queries on petabyte-scale data with millisecond latency.

View details
95
Repo Health
90
Technical
64
Dependency
Built with
C++ 68%
Python 14%
Updated 5 days ago
Python
65%
MIT

Flowfile

Data Engineering

363

Visual ETL that compiles to Polars — build pipelines on a canvas, export as standalone Python, and run anywhere without platform lock-in.

View details
83
Repo Health
81
Technical
66
Dependency
Built with
Python 65%
Vue 17%
TypeScript 17%
Updated 6 days ago
Svelte
32%
GPL 3.0

Mathesar

Databases

5,136

Spreadsheet-like interface for your PostgreSQL database — self-hosted, no SQL required, native Postgres access control.

View details
84
Repo Health
80
Technical
71
Dependency
Built with
Svelte 32%
TypeScript 27%
Python 21%
Updated 6 days ago
Python
55%
Other

PostHog

Ab Testing Experimentation · Analytics · Developer Tools

39,975

The all-in-one open source product platform combining analytics, session replay, feature flags, error tracking, AI observability, and a built-in data warehouse in a single self-hostable stack.

View details
92
Repo Health
80
Technical
65
Dependency
Built with
Python 55%
TypeScript 36%
Updated 5 days ago

Join founders buildingwith open source

Opinionated takes, migration guides, cost-saving tips, and insights from the open source ecosystem.

Subscribe on Substack
Join 750+ subscribers