S3Proxy implements the S3 API and proxies requests
 
 
 
Go to file
Benjamin 3601aa50f3 update depcrecated image, fix minor Label change
Java is deprecated as the state:
"This image is officially deprecated in favor of the openjdk image, and will receive no further updates after 2016-12-31 (Dec 31, 2016). Please adjust your usage accordingly."

I adjusted it to the corresponding 7-alpine-jre tag  from openjdk
https://hub.docker.com/_/openjdk/

the MAINTAINER instruction is deprecated as of Docker Version: 
1.13.0
https://docs.docker.com/engine/deprecated/#maintainer-in-dockerfile

all the best
2018-04-20 08:52:15 -07:00
s3-tests@c70d79f8ef
src Add `UTF-8` character encoding to all S3 responses 2018-04-16 22:52:28 -07:00
.gitignore
.gitmodules
.mailmap
.travis.yml
Dockerfile update depcrecated image, fix minor Label change 2018-04-20 08:52:15 -07:00
LICENSE
README.md Rename Scality to Zenko and reparent reference 2018-04-16 21:26:34 -07:00
pom.xml Upgrade to spotbugs 3.1.2 2018-04-14 08:53:07 -07:00

README.md

S3Proxy

Github All Releases Docker Pulls Maven Central Twitter Follow

S3Proxy implements the S3 API and proxies requests, enabling several use cases:

  • translation from S3 to Backblaze B2, EMC Atmos, Google Cloud, Microsoft Azure, and OpenStack Swift
  • testing without Amazon by using the local filesystem
  • extension via middlewares
  • embedding into Java applications

Usage with Docker

Docker Hub hosts a Docker image and has instructions on how to run it.

Usage without Docker

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.

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.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>

Usage with Java

Maven Central hosts S3Proxy artifacts and the wiki has instructions on Java use.

Supported storage backends

  • atmos
  • aws-s3 (Amazon-only)
  • azureblob
  • b2
  • filesystem (on-disk storage)
  • google-cloud-storage
  • openstack-swift
  • rackspace-cloudfiles-uk and rackspace-cloudfiles-us
  • s3 (all implementations)
  • transient (in-memory storage)

See the wiki for examples of configurations.

Middlewares

S3Proxy can modify its behavior based on middlewares:

Limitations

S3Proxy has broad compatibility with the S3 API, however, it does not support:

  • ACLs other than private and public-read
  • BitTorrent hosting
  • bucket logging
  • cross-origin resource sharing, see #142
  • hosting static websites
  • list objects v2, see #168
  • object server-side encryption
  • object tagging
  • object versioning, see #74
  • POST upload policies, see #73
  • requester pays buckets
  • select object content

S3Proxy emulates the following operations:

  • copy multi-part objects, see #76

The wiki collects compatibility notes for specific storage backends.

Support

GitHub issues provide community support. Andrew Gaul provides commercial support via andrew@gaul.org.

References

  • Apache jclouds provides storage backend support for S3Proxy
  • Ceph s3-tests help maintain and improve compatibility with the S3 API
  • fake-s3, gofakes3, S3 ninja, and s3rver provide functionality similar to S3Proxy when using the filesystem backend
  • GlacierProxy and SwiftProxy provide similar functionality for the Amazon Glacier and OpenStack Swift APIs
  • minio and Zenko provide similar multi-cloud functionality
  • s3mock mocks the S3 API for Java/Scala projects
  • sbt-s3 runs S3Proxy via the Scala Build Tool
  • swift3 provides an S3 middleware for OpenStack Swift

License

Copyright (C) 2014-2018 Andrew Gaul

Licensed under the Apache License, Version 2.0