Developing Amazon S3 locally using fakes3
Water
|
04/10/2014
|

We can use fake S3 to simulate Amazon S3 service locally.

Installation

Use gem to install fakes3

    gem install fakes3

Then you can start the fakes3 server

    fakes3 --root=/var/tmp/fakes3 --port=10453

that will open port at 10453 and store data at /var/tmp/fakes3

Editing /etc/hosts

To redirect traffic back to localhost, add the following line:

127.0.0.1 fakes3.local testme.waterworld.com.hk.fakes3.local

that testme.waterworld.com.hk will be the bucket name that we will use later.

Knox

Testing if fakes3 works, we build some code using knox

    knox=require('knox')

    client=knox.createClient
      key: "hello"
      secret: "world"
      bucket: "testme.waterworld.com.hk"
      endpoint: "fakes3.local"
      secure: false
      port: 10453

    string = "hello world"
    req = client.put '/test/a.txt',
      'Content-Length': string.length
      'Content-Type': 'application/json'
    req.on 'response', (res) ->
      console.log "saved #{req.url}, #{res.statusCode}"
    req.end(string)

Noted that will must disable secure, set the port and endpoint.

run it:

    > coffee test.coffee
    saved http://testme.waterworld.com.hk.fakes3.local:10453/test/a.txt, 200

At the server, it should log:

    localhost - - [10/Apr/2014:18:41:15 HKT] "PUT /test/a.txt HTTP/1.1" 200 0
    - -> /test/a.txt

Also you should able to find your data stored at /var/tmp/fakes3 folder.