Project Name | Stars | Downloads | Repos Using This | Packages Using This | Most Recent Commit | Total Releases | Latest Release | Open Issues | License | Language |
---|---|---|---|---|---|---|---|---|---|---|
S3proxy | 1,433 | 6 | 12 | 22 days ago | 16 | April 03, 2022 | 113 | apache-2.0 | Java | |
Access other storage backends via the S3 API | ||||||||||
S3 Proxy | 215 | a day ago | 14 | March 16, 2021 | 14 | apache-2.0 | Go | |||
S3 Reverse Proxy with GET, PUT and DELETE methods and authentication (OpenID Connect and Basic Auth) | ||||||||||
Osproxy | 143 | 2 months ago | 2 | apache-2.0 | Go | |||||
对象存储分布式代理(object storage distrbuted proxy),支持Docker一键部署 | ||||||||||
Nginx S3 Proxy | 119 | 7 years ago | ||||||||
nginx compiled with aws-auth support, suitable for S3 reverse proxy usage | ||||||||||
S3 Sftp Proxy | 87 | 4 years ago | 16 | mit | Go | |||||
An AWS S3 gateway proxying SFTP connections. | ||||||||||
Cachenator | 64 | 6 months ago | 2 | gpl-3.0 | Go | |||||
Distributed, sharded in-memory cache and proxy for S3 | ||||||||||
Nginx S3 Upload | 64 | 5 years ago | 3 | |||||||
[Unmaintained] S3 file upload proxy using Nginx, complete with AWS authentication. | ||||||||||
S3cr3t | 50 | 3 years ago | 4 | gpl-3.0 | Lua | |||||
A supercharged S3 reverse proxy | ||||||||||
S3proxy | 42 | 8 years ago | May 22, 2021 | 4 | gpl-2.0 | Go | ||||
Simple HTTP proxy to allow non-S3-aware applications to access private Amazon S3 buckets | ||||||||||
Aws S3 Reverse Proxy | 39 | 2 months ago | 2 | January 09, 2021 | 3 | mit | Go | |||
reverse-proxy all incoming S3 API calls to the public AWS S3 backend |
S3Proxy implements the S3 API and proxies requests, enabling several use cases:
Docker Hub hosts a Docker image and has instructions on how to run it.
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 11 or newer 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>[email protected]</DisplayName></Owner><Buckets><Bucket><Name>testbucket</Name><CreationDate>2015-08-05T22:16:24.000Z</CreationDate></Bucket></Buckets></ListAllMyBucketsResult>
Maven Central hosts S3Proxy artifacts and the wiki has instructions on Java use.
See the wiki for examples of configurations.
S3Proxy can be configured to assign buckets to different backends with the same credentials. The configuration in the properties file is as follows:
s3proxy.bucket-locator.1=bucket
s3proxy.bucket-locator.2=another-bucket
In addition to the explicit names, glob syntax can be used to configure many buckets for a given backend.
A bucket (or a glob) cannot be assigned cannot be assigned to multiple backends.
S3Proxy can modify its behavior based on middlewares:
S3Proxy can listen on HTTPS by setting the secure-endpoint
and configuring a keystore. You can read more about how configure S3Proxy for SSL Support in the dedicated wiki page with Docker, Kubernetes or simply Java.
S3Proxy has broad compatibility with the S3 API, however, it does not support:
S3Proxy emulates the following operations:
S3Proxy has basic CORS preflight and actual request/response handling. It can be configured within the properties file (and corresponding ENV variables for Docker):
s3proxy.cors-allow-origins=https://example\.com https://.+\.example\.com https://example\.cloud
s3proxy.cors-allow-methods=GET PUT
s3proxy.cors-allow-headers=Accept Content-Type
CORS cannot be configured per bucket. s3proxy.cors-allow-all=true
will accept any origin and header.
Actual CORS requests are supported for GET, PUT and POST methods.
The wiki collects compatibility notes for specific storage backends.
Copyright (C) 2014-2021 Andrew Gaul
Licensed under the Apache License, Version 2.0