Skip to content

Client compatibility list

Andrew Gaul edited this page Mar 2, 2016 · 14 revisions

This page lists applications known to have compatibility with S3Proxy and any configuration needed to use them. Usually one must explicitly set the endpoint, disable bucket-in-hostname, and use AWS signature v2.

$ aws configure
AWS Access Key ID [****]: local-identity
AWS Secret Access Key [****]: local-credential
Default region name [None]:
Default output format [None]:

$ aws s3 ls --endpoint-url http://127.0.0.1:8080
AmazonS3Client client = new AmazonS3Client(
    new BasicAWSCredentials("identity", "credential"),
    new ClientConfiguration().withSignerOverride("S3SignerType"));
client.setEndpoint("http://127.0.0.1:8080");
client.setS3ClientOptions(new S3ClientOptions().withPathStyleAccess(true));
var AWS = require('aws-sdk');
var s3 = new AWS.S3({
  endpoint: 'http://127.0.0.1:8080',
  accessKeyId: 'local-identity',
  secretAccessKey: 'local-credential',
  s3ForcePathStyle: true
});

Also specify jclouds.regions = us-east-1 to work around aws/aws-sdk-js#919.

boto.connect_s3(aws_access_key_id = 'identity',
    aws_secret_access_key = 'credential',
    host = '127.0.0.1', port = 8080, is_secure = False,
    calling_format = boto.s3.connection.OrdinaryCallingFormat())
fog = Fog::Storage.new(provider: 'aws', endpoint: 'http://127.0.0.1:8080',
    path_style: true)
jclouds blobstore container-list --api s3 \
    --endpoint http://127.0.0.1:8080 \
    --identity local-identity \
    --credential local-credential
from libcloud.storage.types import Provider
from libcloud.storage.providers import get_driver
cls = get_driver(Provider.S3)
driver = cls('local-identity', 'local-credential', host='localhost', port=8080, secure=False)

s3cmd 1.5.0 and newer

Sample .s3cfg:

[default]
access_key = local-identity
secret_key = local-credential
host_base = localhost:8080
host_bucket = localhost:8080

s3cmd before 1.5.0

Sample .s3cfg:

[default]
access_key = local-identity
secret_key = local-credential
host_base = localhost:8080
host_bucket = %(bucket)s.localhost:8080

Also include this in your s3proxy.properties:

s3proxy.virtual-host=localhost

Additionally, you will need to make sure bucket.localhost is resolved to localhost:

127.0.0.1       bucket.localhost

You can make *.localhost resolve to 127.0.0.1 if you use dnsmasq. For example with NetworkManager managed dnsmasq:

echo address=/localhost/127.0.0.1 | sudo tee /etc/NetworkManager/dnsmasq.d/localhost.conf
$ echo local-identity:local-credential > passwd
$ chmod 600 passwd
$ s3fs bucketname dirname \
      -o passwd_file=passwd \
      -o sigv2 \
      -o url=http://127.0.0.1:8080 \
      -o use_path_request_style

Clone this wiki locally