aws4-tiny

Tiny AWS Signature Version 4 library for the browser

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
aws4-tiny
401.0.04 years ago4 years agoMinified + gzip package size for aws4-tiny in KB

Readme

Build Status GitHub license sponsored by sponsored by
aws4-tiny
Minimal browser bundle with zero dependencies for signing requests using Amazon's AWS Signature Version 4.
This package is largely based off of the excellent work of @mhart's aws4. While using aws4 in the browser is possible, its footprint is rather large (325kb, or 100kb gzipped) due to the number of polyfills that need to be pulled in. aws4-tiny provides a few hand-crafted polyfills that were optimized for use with aws4.
aws4-tiny supports all modern browsers and IE 9+ at just under 7kb (gzipped). The following browser versions are supported:
| Browser | Version | | ------- | ------- | | IE | 9+ | | Edge | 15+ | | Firefox | 47+ | | Chrome | 49+ |

Installation

The package is available as UMD build which let's you include the bundle directly using a <script> tag or you can use your preferred module loader.
npm install --save aws4

<script src="https://unpkg.com/aws4-tiny@1.0.0/dist/aws4.js">
<script>
  aws4.sign(opts, credentials);
</script>

import aws4 from 'aws4-tiny';

aws4.sign(opts, credentials)

Usage

aws4.sign(opts, credentials)
See aws4 API for details on the opts object.
Example using fetch:
var credentials = {
  accessKeyId: '',
  secretAccessKey: '',
  sessionToken: '', // only required for temporary credentials
};

var request = aws4.sign({
  service: 'execute-api',
  region: 'us-east-2',
  host: 'avkqerpv.execute-api.us-east-2.amazonaws.com',
  path: '/v1/items',
}, credentials);

fetch('https://avkqerpv.execute-api.us-east-2.amazonaws.com/v1/items', request);

aws4.fetch

aws4.fetch(url , opts, credentials)
aws4.fetch(opts, credentials)
aws4.fetch is a convenience wrapper around signing a request with aws4 and then sending it off using fetch.
aws4.fetch('https://avkqerpv.execute-api.us-east-2.amazonaws.com/v1/items', {
  service: 'execute-api',
  region: 'us-east-2',
}, credentials);


aws4.fetch({
  service: 'sqs',
  region: 'us-east-2',
  path: '/?Action=ListQueues',
}, credentials);

aws4.fetch(Request, credentials)

Tests

aws4-tiny passes the AWS Sig V4 Test Suite. You can run it youself at emdgroup.github.io/aws4-tiny/
(open the dev console to see the test results). We also run automated tests on Browser Stack.

FAQ

Can I use aws4-tiny with NodeJS?
Yes, but it's not recommended. The aws4 package is actually much smaller and faster in a Node environment.

Thanks

Thanks to @mhart for aws4 which made this package possible.
Automated browser testing proudly supported by
Browser Stack