S3Proxy implements the S3 API and proxies requests
 
 
 
Go to file
Andrew Gaul 3c8f68feb2 Update copyright year to 2016 2016-01-09 21:14:59 -08:00
s3-tests@8f1b2597f0 Update s3-tests to include POST upload tests 2015-11-14 23:24:58 -08:00
src Update copyright year to 2016 2016-01-09 21:14:59 -08:00
.gitignore
.gitmodules
.travis.yml Re-enable s3-tests with Travis 2015-07-14 11:35:27 -07:00
LICENSE
README.md Update copyright year to 2016 2016-01-09 21:14:59 -08:00
pom.xml Remove glacier dependency 2016-01-09 12:36:48 -08:00

README.md

S3Proxy

S3Proxy allows applications using the S3 API to access other storage backends, e.g., local file system, Google Cloud Storage, Microsoft Azure, OpenStack Swift.

Installation

Users can download releases from GitHub. Developers can build the project by running mvn package which produces a binary at target/s3proxy. S3Proxy requires Java 7 to run.

Usage

Configure S3Proxy via a properties file. An example using the local file system as the storage backend with anonymous access:

s3proxy.authorization=none
s3proxy.endpoint=http://127.0.0.1:8080
jclouds.provider=filesystem
jclouds.identity=identity
jclouds.credential=credential
jclouds.filesystem.basedir=/tmp/s3proxy

First create the filesystem basedir:

mkdir /tmp/s3proxy

Next run S3Proxy. Linux and Mac OS X users can run the executable jar:

chmod +x s3proxy
s3proxy --properties s3proxy.conf

Windows users must explicitly invoke java:

java -jar s3proxy --properties s3proxy.conf

Finally test by creating a bucket then listing all the buckets:

$ curl --request PUT http://localhost:8080/testbucket

$ curl http://localhost:8080/
<?xml version="1.0" ?><ListAllMyBucketsResult xmlns="http://s3.amazonaws.com/doc/2006-03-01/"><Owner><ID>75aa57f09aa0c8caeab4f8c24e99d10f8e7faeebf76c078efc7c6caea54ba06a</ID><DisplayName>CustomersName@amazon.com</DisplayName></Owner><Buckets><Bucket><Name>testbucket</Name><CreationDate>2015-08-05T22:16:24.000Z</CreationDate></Bucket></Buckets></ListAllMyBucketsResult>

See the wiki for examples of other storage backends.

Supported storage backends

  • atmos
  • aws-s3
  • azureblob
  • filesystem (on-disk storage)
  • google-cloud-storage
  • hpcloud-objectstorage
  • openstack-swift
  • rackspace-cloudfiles-uk and rackspace-cloudfiles-us
  • s3
  • swift and swift-keystone (legacy)
  • transient (in-memory storage)

Limitations

S3Proxy does not support:

  • AWS signature V4, see #24
  • POST uploads, see #73
  • object server-side encryption
  • object versioning, see #74
  • XML ACLs

S3Proxy emulates the following operations:

  • multi-part uploads, see #2
  • copy objects, see #46

The wiki collects other compatability notes.

References

  • Apache jclouds provides storage backend support for S3Proxy
  • Ceph s3-tests help maintain and improve compatibility with the S3 API
  • fake-s3 and S3 ninja provide functionality similar to S3Proxy when using the filesystem backend
  • Another project named s3proxy provides HTTP access to non-S3-aware applications
  • GlacierProxy and SwiftProxy provide similar functionality for the Amazon Glacier and OpenStack Swift APIs
  • s3proxydocker packages S3Proxy as a Docker container
  • swift3 provides an S3 middleware for OpenStack Swift

License

Copyright (C) 2014-2016 Andrew Gaul

Licensed under the Apache License, Version 2.0