Convenient extra methods for the AWS.S3 service.
$ npm install s3-extra
const s3 = require('s3-extra')({ uploadConcurrency: 50 });
// original s3 api services are still reachable
var params = { Bucket: 'bucket', Key: 'key', Body: stream };
s3.putObject(params, (err, data) => {
  console.log(err, data);
});
// plus some extra methods
try {
  // retrieve an S3 object stream from its url
  const objStream = s3.getObjectStream('s3://my-bucket/my/object/filename');
  // upload a folder and keep the same hierarchy
  await s3.uploadFileOrFolder('my/local/folder/path/', 's3://my-bucket/path/', {
    ACL: 'public-read'
  });
  // or just upload a file
  await s3.uploadFileOrFolder(
    'my/local/folder/path/file.txt',
    's3://my-bucket/path/'
  );
} catch (err) {
  throw err;
}Retrieves objects from Amazon S3.
s3Urlstring a valid s3 url reprensenting the location of the object to get.paramsobject the same params as the AWS getObject method are accepted. (optional, default{})
Returns object a stream object.
Uploads a file or a folder to an Amazon S3 bucket.
contentPathstring a path to a file or a folder to upload.s3Urlstring a valid s3 url representing the location to put the content.paramsobject the same params as the AWS upload method are accepted. (optional, default{})
Returns object a promise.
MIT Licensed. Copyright (c) Alexis Kofman 2019.