sync-to-s3
v2.0.2
Published
A package for syncing files in a local directory to an AWS S3 bucket
Downloads
4
Readme
upload-to-s3
This module and script synchronises a local directory (or checked out git repo) onto an S3 bucket. Files are uploaded to or deleted from the S3 bucket. files are never changed in the local directory, unless downloadDir() is called.
Installation
Install nodejs from http://nodejs.org/download/, clone out the upload-to-s3 Repo, and install required modules:
git checkout https://github.com/HughePaul/upload-to-s3.git
cd upload-to-s3
npm install
Command-line Interface
Create a config file in JSON format:
{
"directory": "/path/to/directory",
"bucket": "bucketname",
"accessKeyId": "AWSAccessKey",
"secretAccessKey": "AWSAccessSecret",
"region": "eu-west-1",
"ACL": "public-read"
}
Run the sync script:
./upload-to-s3 config.json
AWS Permissions
The following permissions are required as a minimum for the user performing a file sync:
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"s3:DeleteObject",
"s3:GetObject",
"s3:ListBucket",
"s3:PutObject",
"s3:PutObjectAcl"
],
"Resource": [
"arn:aws:s3:::bucketname",
"arn:aws:s3:::bucketname/*"
]
}
]
}
Initialisation
var config = {
"directory": "/path/to/directory",
"bucket": "bucketname",
"accessKeyId": "AWSAccessKey",
"secretAccessKey": "AWSAccessSecret",
"region": "eu-west-1"
};
var uploadToS3 = new UploadToS3(config);
Events
uploadToS3.on('directory', function(files) {
console.log('Directory:', Object.keys(files).length, 'files');
});
uploadToS3.on('bucket', function(files) {
console.log('Bucket:', Object.keys(files).length, 'files');
});
uploadToS3.on('diff', function(files) {
console.log('Differences:', Object.keys(files).length, 'files');
});
uploadToS3.on('remove', function(filePath) {
console.log('Removing S3 file', filePath);
});
uploadToS3.on('upload', function(filePath) {
console.log('Uploading S3 file', filePath);
});
uploadToS3.on('download', function(filePath) {
console.log('Downloading S3 file', filePath);
});
Methods
uploadToS3.diffDir(function(err, files) {
if (err) return console.error('Error:', err);
console.log(files);
});
uploadToS3.getBucketFiles(function(err, files) {
if (err) return console.error('Error:', err);
console.log(files);
});
uploadToS3.getDirFiles(function(err, files) {
if (err) return console.error('Error:', err);
console.log(files);
});
uploadToS3.syncDir(function(err) {
if (err) return console.error('Error:', err);
});
uploadToS3.uploadDir(function(err) {
if (err) return console.error('Error:', err);
});
uploadToS3.downloadDir(function(err) {
if (err) return console.error('Error:', err);
});
Example
var config = {
directory: "/path/to/directory",
bucket: "bucket-name",
accessKeyId: "AWSAccessKey",
secretAccessKey: "AWSAccessSecret",
region: "eu-west-1"
};
new UploadToS3(config)
.on('remove', function(filePath) {
console.log('Removing S3 file', filePath);
})
.on('upload', function(filePath) {
console.log('Uploading S3 file', filePath);
})
.syncDir(function(err) {
if (err) return console.error('Error:', err);
});