Skip to content
This repository


Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

An AWS S3 library for Node.js, with bucket-scoped connection pooling.

branch: master

Fetching latest commit…


Cannot retrieve the latest commit at this time

Octocat-spinner-32 demo
Octocat-spinner-32 lib
Octocat-spinner-32 index.js
Octocat-spinner-32 package.json
Octocat-spinner-32 utils.js

S3 for Node.js

node-s3 is a (thus far) minimilist library for Amazon's S3 storage system.


The first thing you'll need is a request manager:

 var s3 = new S3('your_aws_key', 'your_aws_secret_key')


At the moment, the only supported commands are put and get, and are used thusly:

Put: var data_to_upload = {a:'b', c:'d'} s3.put({bucket:'my_bucket', key:'some_directory/key', data:data_to_upload}, function(err, result) { if (!err) do_stuff() }) You can also pass your own headers to put: var data_to_upload = {a:'b', c:'d'}, headers = { 'x-amz-storage-class': 'REDUCED_REDUNDANCY' }

s3.put({bucket:'my_bucket', key:'some_directory/key', data:data_to_upload, headers:headers}, function(err, result) {
  if (!err)

Get: s3.get('my_bucket', 'some_directory/key', function(err, result) { if (!err) do_stuff(result) })

Connection Pooling

node-s3 uses host (bucket) scoped connection pooling, via HTTP's keep-alive goodness. By default, ten possible connections per host are created, but not all of them connect immediately. The pool attempts to re-use the most recently freed http client, so as to minimize the number of actual connections made.


Pull requests are encouraged!

Something went wrong with that request. Please try again.