Simple AWS S3 Wrapper πŸ”₯
Switch branches/tags
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
.editorconfig
.gitattributes
.gitignore
.yo-rc.json
index.js
license
package-lock.json
package.json
readme.md
utils.js

readme.md

Simple AWS S3 Wrapper πŸ”₯

Install

$ npm install s3-bucket

Environment Variables

S3_BUCKET_ACCESS_KEY_ID=value
S3_BUCKET_SECRET_ACCESS_KEY=value

S3_BUCKET_NAME=value
S3_BUCKET_REGION=value

Usage

// Don't forgot to import the function 😊
const {
	updateCredentials,
	updateRegion,
	getAllBuckets,
	getUploadUrl,
	uploadFile,
	listFiles,
	deleteFiles,
} = require('s3-bucket');

getAllBuckets()

Yep! Like you've already guessed. It'll list all the buckets in your AWS account.

// Request
getAllBuckets()
	.then(buckets => console.log(buckets));
// Response
{
	Buckets:
	[
		 { Name: 'your-bucket-name', CreationDate: '2017-09-14T13:14:01.000Z' },
	],
  Owner:{ ID: 'your-id-here' }
}

getUploadUrl(customParams)

Get Signed Upload URL. Then use that to upload files to upload files directly to S3 without sending it to your server.

Required Params

ContentType β†’ content type of the file. Key β†’ path of that file within your S3 bucket

Optional Params

Bucket ACL β†’ public-read by default Expires β†’ 60 seconds

// Request
getUploadUrl({
	ContentType: 'application/javascript',
	Key: 'your-dir/test.js'
}).then(res => console.log(res))

// Response
{ signedUrl: 'https://s3.ap-south-1.amazonaws.com/your-bucket-name/your-dir/test.js?all-query-strings' }

uploadFile(customParams)

Upload files to your S3 bucket.

Required Params

filePath β†’ absolute path to the file Key β†’ path of that file within your S3 bucket

Optional Params

Bucket ACL β†’ public-read by default Expires β†’ 60 seconds

// Request
uploadFile({
	filePath: 'path/to/your/file.js',
	Key: 'your-dir/test.js'})
.then(res => console.log(res));

// Response
{ ETag: '"9184ea01719a9444c823f1cb797529c9"',
	url: 'https://your-bucket-name.s3.amazonaws.com/your-dir/test.js'
}

listFiles(customParams)

Just list all the files(objects) in your bucket.

Optional Params

Bucket

// Request
listFiles({}).then(files => console.log(files))

// Response
{ IsTruncated: false,
  Contents:
   [ { Key: 'your-dir/test.js',
       LastModified: '2017-12-18T09:58:09.000Z',
       ETag: '"fd131f0975cdb3b6422290261866bf01"',
       Size: 383,
       StorageClass: 'STANDARD' },
	],
  Name: 'your-bucket-name',
  Prefix: '',
  MaxKeys: 1000,
  CommonPrefixes: [],
  KeyCount: 31 }

deleteFiles(customParams)

Let's delete files πŸ—‘οΈ

Required Params

files β†’ path to files (Keys) in array

Optional Params

Bucket

// Request
deleteFiles({
	files: ['your-dir/test.js']
})
.then(res => console.log(res));

// Response
{ Deleted: [ { Key: '/your-dir/test.js' } ], Errors: [] }

updateCredentials(credentials)

Sometimes we want to set our AWS credentials dynamically.

In that senario we can use updateCredentials() to set the credentials on the fly

	const credentials = {
		accessKeyId:'your-aws-access-key',
		secretAccessKey:'your-aws-secret-key'
	};
	updateCredentials(credentials)

updateRegion(region)

Setting our S3 region on the fly

	updateRegion('ap-south-1')

updateBucketName(bucketName)

Setting our S3 region on the fly

	updateBucketName('new-bucket-name')

TODO

  • Handle Missing credentials errors
  • File Upload Progress

License

MIT Β© Ashik Nesin