A lightweight server clone of Amazon S3 that simulates most of the commands supported by S3 with minimal dependencies
Ruby Python Makefile
Latest commit 994f7ff Jan 24, 2018
ushatil authored and jubos committed Jan 24, 2018 Add ability to control CORS Headers (resolves #130)
The issue only required modifying the Allowed-Headers,
but it seemed strange to add the ability to control
that one without being able to control the others

- Current behavior without added flags is unnaffected
- No existing assertions are changed
- Added assertions to demonstrate control of CORS Headers


Fake S3


Fake S3 is a lightweight server that responds to the same API of Amazon S3.

It is extremely useful for testing of S3 in a sandbox environment without actually making calls to Amazon, which not only requires a network connection, but also costs money with every use.

The goal of Fake S3 is to minimize runtime dependencies and be more of a development tool to test S3 calls in your code rather than a production server looking to duplicate S3 functionality.

Many commands are supported, including put, get, list, copy, and make bucket.


gem install fakes3


To run the server, you just specify a root and a port.

fakes3 -r /mnt/fakes3_root -p 4567


As of the latest version, we are licensing with Super Source. To get a license, visit:


Depending on your company's size, the license may be free. It is also free for individuals.

Connecting to Fake S3

Take a look at the test cases to see client example usage. For now, Fake S3 is mainly tested with s3cmd, aws-s3 gem, and right_aws. There are plenty more libraries out there, and please do mention if other clients work or not.

Here is a running list of supported clients


Contributions in the form of pull requests, bug reports, documentation, or anything else are welcome! Please read the CONTRIBUTING.md file for more info: CONTRIBUTING.md