Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/ungoldman/nano-s3

Upload a file to S3.
https://github.com/ungoldman/nano-s3

aws nano node s3

Last synced: 16 days ago
JSON representation

Upload a file to S3.

Awesome Lists containing this project

README

        

# nano-s3 [![stability][0]][1]

[![npm version][2]][3] [![build status][4]][5]
[![downloads][8]][9] [![js-standard-style][10]][11]

Upload a file to S3.

[0]: https://img.shields.io/badge/stability-stable-brightgreen.svg?style=flat-square
[1]: https://nodejs.org/api/documentation.html#documentation_stability_index
[2]: https://img.shields.io/npm/v/nano-s3.svg?style=flat-square
[3]: https://npmjs.org/package/nano-s3
[4]: https://img.shields.io/travis/ungoldman/nano-s3/master.svg?style=flat-square
[5]: https://travis-ci.org/ungoldman/nano-s3
[8]: http://img.shields.io/npm/dm/nano-s3.svg?style=flat-square
[9]: https://npmjs.org/package/nano-s3
[10]: https://img.shields.io/badge/code%20style-standard-brightgreen.svg?style=flat-square
[11]: https://github.com/feross/standard

## About

Sometimes you just need a small lib to do a simple task.

- uploads a file to [s3](https://aws.amazon.com/s3/)
- that's it
- no other features
- very small!
- 7.4 KB unpacked
- compare to [`aws-sdk`](https://www.npmjs.com/package/aws-sdk)'s 30.7 MB

Thanks to [toddself](https://github.com/toddself) for providing the [original code](https://github.com/ungoldman/nano-s3/commit/ec3bb4c5df16582cc4441243e9437f2a2258c9d2) that this was adapted from!

## Installation

```
npm install nano-s3
```

## Usage

```js
const fs = require('fs')
const path = require('path')
const nanoS3 = require('nano-s3')

const options = {
// AWS Config
// Environment variables strongly recommended for keys
accessKeyId: 'abc',
secretAccessKey: 'xyz',

// protocol is optional, defaults to https
protocol: 'https',
host: 's3.us-west-1.amazonaws.com',
bucket: 'your-bucket-name',

// Name of uploaded file on S3
filename: 'image.jpg',

// MIME type of file
contentType: `image/jpeg`,

// File data (Should be a Buffer)
data: fs.readFileSync(path.join(__dirname, 'image.jpg')),

// Directory path in bucket (optional)
path: 'path/in/bucket',

// Max file size, default 2MB (optional).
// Required by AWS for upload policy.
maxFileSize: 2 * 1024 * 1024
}

nanoS3(options, function (err, res) {
if (err) throw err
console.log(res.statusCode, res.statusMessage)
})
```

## API

### `nanoS3(options, cb)`

Params:
- `options` - *Object*:
- `accessKeyId` - *String*: AWS access key ID with write access to the host and bucket.
- `secretAccessKey` - *String*: AWS secret access key for signing.
- `protocol` - *String*: protocol to use for AWS URL. Default: `'https'`.
- `host` - *String*: AWS host to upload the files to, e.g. `s3.us-west-1.amazonaws.com`.
- `bucket` - *String*: Your AWS bucket name.
- `filename` - *String*: Name of file to upload.
- `contentType` - *String*: MIME type of file.
- `data` - *Buffer*: File data. Should be a Buffer.
- `path` - *String*: Path in bucket to upload to (optional). Default: none (root).
- `maxFileSize` - *Number*: Max file size (optional). Default: 2MB (`2 * 1024 * 1024`).
- `cb` - *Function*:
- `err` - *Error*: `null` if everything went fine, `Error` object if something went wrong.
- `res` - [*Response*](https://nodejs.org/api/http.html#http_class_http_serverresponse): `http` response object.

## License

[ISC](LICENSE.md)