s3fs

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

SDK
PyPI
v2026.7.0
1,046stars
BSD 3-Clause License

Repository Health

Pre-computed score based on development activity, maintenance, community, maturity, and trend momentum.How we score it →
63/100Good
Development Activity64
Maintenance20
Community80
Maturity60
Momentum28

Technical Analysis

AI-assessed by reading the actual repository — architecture, code quality, innovation, and documentation.How we score it →
68/100Good
Architecture72
Code Quality70
Innovation62
Learning Curve68

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 AbstractFileSystemls, 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
49%
Other

Airbyte

Developer Tools · Data Engineering

21,916

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
Python49%
Kotlin42%
Updated today
Python
90%
Apache 2.0

Apache Airflow

Data Engineering

46,530

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
66
Dependency
Built with
Python90%
Updated today
C++
69%
Apache 2.0

ClickHouse

Databases · Analytics · Data Engineering

49,325

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
68
Dependency
Built with
C++69%
Python13%
Updated today
Python
64%
MIT

Flowfile

Data Engineering

341

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
Python64%
Vue19%
TypeScript16%
Updated today
Svelte
32%
GPL 3.0

Mathesar

Databases

5,096

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

View details
87
Repo Health
80
Technical
72
Dependency
Built with
Svelte32%
TypeScript27%
Python21%
Updated yesterday
Python
55%
Other

PostHog

Analytics · Monitoring · Developer Tools

37,777

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
67
Dependency
Built with
Python55%
TypeScript36%
Updated today

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

Search