Skip to content

Latest commit

 

History

History
110 lines (73 loc) · 3.61 KB

README.md

File metadata and controls

110 lines (73 loc) · 3.61 KB

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/[email protected]/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