Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/binoculars/aws-sigv4
A library for AWS Signature Version 4
https://github.com/binoculars/aws-sigv4
Last synced: 16 days ago
JSON representation
A library for AWS Signature Version 4
- Host: GitHub
- URL: https://github.com/binoculars/aws-sigv4
- Owner: binoculars
- License: unlicense
- Created: 2015-10-18T03:49:49.000Z (about 9 years ago)
- Default Branch: develop
- Last Pushed: 2020-06-01T01:14:59.000Z (over 4 years ago)
- Last Synced: 2024-10-14T17:36:27.143Z (30 days ago)
- Language: JavaScript
- Homepage: https://binoculars.github.io/aws-sigv4/
- Size: 4.77 MB
- Stars: 15
- Watchers: 6
- Forks: 1
- Open Issues: 10
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# aws-sigv4
> A dependency-free, test suite-compliant, AWS Signature Version 4 library in ES2017
[![NPM](https://nodei.co/npm/aws-sigv4.png?mini=true)](https://nodei.co/npm/aws-sigv4/)
[![npm version](https://badge.fury.io/js/aws-sigv4.svg)](https://badge.fury.io/js/aws-sigv4)
[![ESDoc](http://binoculars.github.io/aws-sigv4/esdoc/badge.svg)](http://binoculars.github.io/aws-sigv4/esdoc/)
[![Dependency Status](https://david-dm.org/binoculars/aws-sigv4.svg)](https://david-dm.org/binoculars/aws-sigv4)
[![devDependency Status](https://david-dm.org/binoculars/aws-sigv4/dev-status.svg)](https://david-dm.org/binoculars/aws-sigv4#info=devDependencies)
[![Coverage Status](https://coveralls.io/repos/binoculars/aws-sigv4/badge.svg?branch=master&service=github)](https://coveralls.io/github/binoculars/aws-sigv4?branch=master)
[![Code Climate](https://codeclimate.com/github/binoculars/aws-sigv4/badges/gpa.svg)](https://codeclimate.com/github/binoculars/aws-sigv4)
[![Test Coverage](https://codeclimate.com/github/binoculars/aws-sigv4/badges/coverage.svg)](https://codeclimate.com/github/binoculars/aws-sigv4/coverage)
[![Issue Count](https://codeclimate.com/github/binoculars/aws-sigv4/badges/issue_count.svg)](https://codeclimate.com/github/binoculars/aws-sigv4)
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/75a427334dad4aac843674b99bc40e8b)](https://www.codacy.com/app/barrett-harber/aws-sigv4?utm_source=github.com&utm_medium=referral&utm_content=binoculars/aws-sigv4&utm_campaign=Badge_Grade)
[![Known Vulnerabilities](https://snyk.io/test/github/binoculars/aws-sigv4/badge.svg)](https://snyk.io/test/github/binoculars/aws-sigv4)
[![Greenkeeper badge](https://badges.greenkeeper.io/binoculars/aws-sigv4.svg)](https://greenkeeper.io/)- Master: [![Build Status](https://travis-ci.org/binoculars/aws-sigv4.svg?branch=master)](https://travis-ci.org/binoculars/aws-sigv4)
- Develop: [![Build Status](https://travis-ci.org/binoculars/aws-sigv4.svg?branch=develop)](https://travis-ci.org/binoculars/aws-sigv4)## Example - ES2017 (Node 7.6+)
```JavaScript
const sigv4 = require('aws-sigv4');const secretAccessKey = process.env.AWS_SECRET_ACCESS_KEY;
const requestDate = sigv4.formatDateTime(new Date());
const stringToSign = 'Test string to sign';(async () => {
const signature = await sigv4.sign(
secretAccessKey,
requestDate.slice(0, 8),
'us-east-1',
'host',
stringToSign
);console.log(signature);
})();
```## Example - ES2016 (Node 4, 6, <= 7.5)
```JavaScript
const sigv4 = require('aws-sigv4');const secretAccessKey = process.env.AWS_SECRET_ACCESS_KEY;
const requestDate = sigv4.formatDateTime(new Date());
const stringToSign = 'Test string to sign';sigv4.sign(
secretAccessKey,
requestDate.slice(0, 8),
'us-east-1',
'host',
stringToSign
)
.then(signature => console.log(signature));
```### Or, more specifically for S3:
```JavaScript
const sigv4 = require('aws-sigv4');const date = sigv4
.formatDateTime(new Date())
.slice(0, 8);
const credential = `${process.env.AWS_ACCESS_KEY_ID}/${date}/${process.env.AWS_REGION}/s3/aws4_request`;
const policy = new Buffer(
JSON.stringify({
expiration: new Date(Date.now() + 15 * 60000).toISOString(), // 15 minutes from now
conditions: [
{bucket: 'my-bucket-name'},
{key: 'my-s3-key.mov'},
{acl: 'private'},
['starts-with', '$Content-Type', 'video/'],
['content-length-range', 0, 10 * 1024 * 1024],
{'x-amz-credential': credential},
{'x-amz-algorithm': 'AWS4-HMAC-SHA256'},
{'x-amz-date': date + 'T000000Z'}
]
})
)
.toString('base64');sigv4.sign(
process.env.AWS_SECRET_ACCESS_KEY,
date,
process.env.AWS_REGION,
's3',
policy
)
.then(signature => console.log(signature));
```See [Authenticating Requests in Browser-Based Uploads Using POST (AWS Signature Version 4)](https://docs.aws.amazon.com/AmazonS3/latest/API/sigv4-UsingHTTPPOST.html) as the primary use case.