Atom feed of this document
 

 Configuring Object Storage with the S3 API

The Swift3 middleware emulates the S3 REST API on top of Object Storage.

The following operations are currently supported:

  • GET Service

  • DELETE Bucket

  • GET Bucket (List Objects)

  • PUT Bucket

  • DELETE Object

  • GET Object

  • HEAD Object

  • PUT Object

  • PUT Object (Copy)

To use this middleware, first download the latest version from its repository to your proxy server(s).

$ git clone https://github.com/fujita/swift3.git

Optional: To use this middleware with Swift 1.7.0 and previous versions, you'll need to use the v1.7 tag of the fujita/swift3 repository. Clone the repo as above and then:

$ cd swift3; git checkout v1.7

Then, install it using standard python mechanisms, such as:

$ sudo python setup.py install

Alternatively, if you have configured the Ubuntu Cloud Archive, you may use:

$ sudo apt-get install swift-python-s3

To add this middleware to your configuration, add the swift3 middleware in front of the auth middleware, and before any other middleware that look at swift requests (like rate limiting).

Ensure that your proxy-server.conf file contains swift3 in the pipeline and the [filter:swift3] section, as shown below:

[pipeline:main]
pipeline = healthcheck cache swift3 swauth proxy-server

[filter:swift3]
use = egg:swift#swift3
        

Next, configure the tool that you use to connect to the S3 API. For S3curl, for example, you'll need to add your host IP information by adding y our host IP to the @endpoints array (line 33 in s3curl.pl):

my @endpoints = ( '1.2.3.4');

Now you can send commands to the endpoint, such as:

$ ./s3curl.pl - 'myacc:myuser' -key mypw -get - -s -v http://1.2.3.4:8080
        

To set up your client, the access key will be the concatenation of the account and user strings that should look like test:tester, and the secret access key is the account password. The host should also point to the Swift storage node's hostname. It also will have to use the old-style calling format, and not the hostname-based container format. Here is an example client setup using the Python boto library on a locally installed all-in-one Swift installation.

connection = boto.s3.Connection(
    aws_access_key_id='test:tester',
    aws_secret_access_key='testing',
    port=8080,
    host='127.0.0.1',
    is_secure=False,
    calling_format=boto.s3.connection.OrdinaryCallingFormat())
        
Log a bug against this page


loading table of contents...