Skip to content
This repository has been archived by the owner on Jun 21, 2018. It is now read-only.

kessler/s3shield

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

59 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

s3shield

small abstraction over various s3 clients

Install

npm install s3shield

Usage

var s3shield = require('s3shield');

var clientProvider = s3shield.S3ClientProviderFactory.get('knox', /* optional s3 config to override rc*/); // can also use 'faulty' to get a client that simulates errors and works against local file system but with same api

var client = clientProvider.get('mybucket');

client.put('mykey', 'mydata', callback);

client.putFile('mykey', 'a/file/some/where.log', callback);

var http = require('http');

http.createServer(function(request, response) {
	client.putStream('myKey', request, function(err) {
		response.end();
	});
}).listen(8080);

Config

// .s3shieldrc: (remove comments, json doesnt allow for them)

{

	// aws config
	"aws": {
		"region": "your region",
		"accessKeyId": "your access key",
		"secretAccessKey": "your secret"
	},

	"clientType": "knox" || "aws-sdk" || "faulty" || "local", // default is knox

	// see lru-cache for all the options
	// used by knox client provider to catch a client per bucket

	"lru": {
		"max": 100,
		"maxAge": 86400000
	},

	// if enabled will gzip a message or a file to local file before uploading

	"gzip": {
		"enabled": false,

		// see http://nodejs.org/api/zlib.html#zlib_options
		"options": undefined,

		// if enabled the unzipped file will be deleted after upload (but not the zipped one)
		// this only applies to file messages
		"deleteFileAfterUpload": false
	},

	// if set to true, deletes files (this doesn't apply to put() or putStream()) after successful upload
	deleteAfterUpload: false,


	// in put() functions where a string or an object is provided (and not a buffer) this enconding
	// will be used when turning the data into a buffer
	"uploadEncoding": "utf8",

	// "faulty s3 client is used for testing"
	"faulty": {

		// how many time should I fail
		"failures": 3
	}
}

see RC module for further details

Message format

	{
		"bucket": "name of the bucket",
		"key": "path in the bucket",
		"data": "some data to write",
		"url": "instead of embedding the data in the message, zero-s3 will issue an http request to get this data and upload to s3 - not implemented fully yet"
		"path": "instead of embedding the data in the message, zero-s3 will upload a local file to s3"
	}

if both url and data exist in the message, there is no guarentee which will take effect

Example

_(Coming soon)_

Documentation

(Coming soon)

Contributing

In lieu of a formal styleguide, take care to maintain the existing coding style. Add unit tests for any new or changed functionality. Lint and test your code using Grunt.

Release History

(Nothing yet)

License

Copyright (c) 2013 Yaniv Kessler. Licensed under the MIT license.

About

a small abstraction over several s3 providers

Resources

Stars

Watchers

Forks

Packages

No packages published