sync-to-s3

2.0.2 • Public • Published

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);
    });

Readme

Keywords

none

Package Sidebar

Install

npm i sync-to-s3

Weekly Downloads

3

Version

2.0.2

License

MIT

Unpacked Size

12.7 kB

Total Files

6

Last publish

Collaborators

  • hughepaul