nodestream-s3
v0.6.1
Published
AWS S3 adapter for Nodestream
Downloads
61
Maintainers
Readme
nodestream-s3
AWS S3 adapter for Nodestream
Identity:: s3
Description
This adapter provides interface for Nodestream to transfer bytes between your app and Amazon S3 cloud storage.
Usage
Installation
npm install --save nodestream-s3
Configuration
When configuring Nodestream instance, the only required option is the bucket
. The rest is optional and is passed along unmodified to the AWS.S3()
constructor. No default values are provided.
const Nodestream = require('nodestream')
const nodestream = new Nodestream({
adapter: 's3',
config: {
// Required - cannot do anything without a bucket!
bucket: 'my-s3-bucket',
// The rest of the options is passed as-is to the AWS.S3() constructor
// NOTE: You will probably need the AWS credentials here 😀
accessKeyId: 'my-access-key-id',
secretAccessKey: 'my-secret!'
}
})
Usage
Uploading
When uploading files, you may specify a directory
and name
for the upload. Both are optional - if no name
is given, a random GUID will be generated.
You can also specify custom options for the upload()
method to specify options like ACL or part size for multipart uploads.
const file = fs.createReadStream('/users/me/profile-pic.png')
nodestream.upload(file, {
directory: 'avatars',
name: 'user-123.png',
s3: {
// This corresponds to the first argument of the S3.upload() method
// NOTE: Specifying `Key`, `Body` or `Bucket` here will have no effect
params: {
ACL: 'public-read'
},
// This corresponds to the second argument of the S3.upload() method
options: {
partSize: 10 * 1024 * 1024
}
}
})
Downloading
You can also specify options for the getObject()
method via s3
object (this adapter's identity) in the third argument.
const dest = fs.createWriteStream('/users/me/profile-pic.png')
nodestream.download('avatars/user-123.png', dest, {
s3: {
Range: '1000-'
}
})
// Perhaps in an Express controller, you would pipe the file to the client
res.setHeader('content-type', 'image/png')
res.setHeader('content-disposition', 'attachment')
nodestream.download('avatars/user-123.png', res)
.then(results => {
// Client received the file
})
License
This software is licensed under the BSD-3-Clause License. See the LICENSE file for more information.