@sepior/s3

Sepior Node.js S3 Library

Usage no npm install needed!

<script type="module">
  import sepiorS3 from 'https://cdn.skypack.dev/@sepior/s3';
</script>

README

Sepior node-s3

Greenkeeper badge

This is the Sepior S3 Library. This can be used on Node to handle Sepior encrypted files on Amazon S3.

Building the SDK

Make sure you have node installed (version 6 or later). Then do

npm install

Usage

First you need to initialise AWS and Sepior clients:

const AWS = require('aws-sdk')
const {SepiorServicesClient} = require('@sepior/sdk')
const {SepiorServicesS3} = require('@sepior/s3')
const awsS3Client = new AWS.S3()

awsS3Client.config.update({accessKeyId: 'accessKeyId', secretAccessKey: 'secretAccessKey'})
const sepiorClient = SepiorServicesClient.createPasswordBasedClient(['ks1.example.com', 'ks2.example.com', 'ks3.example.com'], 'someAppId', {'username': 'username', 'password': 'password'})
const seps3 = SepiorServicesS3.fetchClient(sepiorClient, awsS3Client)

Encrypting and uploading a file is done like this:

const fs = require('fs')
const inStream = fs.createReadStream('./foo.txt')
seps3.uploadData(s3Bucket, s3Key, inStream)
    .then(data => {
        console.log('Done')
    })

You can also encrypt and upload a buffer by passing a buffer to uploadData instead of a stream.

Downloading and decrypting is very similar:

seps3.downloadData(s3Bucket, s3Key)
    .then(stream => {
        const outStream = fs.createWriteStream('./foo.txt')
        stream.pipe(outStream)
    })

Tests

To run the tests you must first set the proper credentials in environment variables (see test/test.json) and then run:

npm test

Contributing

When contributing changes remember to update the CHANGELOG.md.

Releasing

When releasing a new version (x.x.x) do the following:

  • Update the change log by creating a new section (headed [x.x.x]) containing the content of the unreleased section
  • Correct the package version in package.json
  • Commit these changes with the message: chore: Release x.x.x Notice: This commit should only contain the changes to package.json and CHANGELOG.md
  • Tag this commit git tag -a x.x.x -m "Release x.x.x"
  • Push commit and merge to master.
  • Push tags.