https://github.com/tivac/aws-sig
🔏 AWS sigv4, optimized for size
https://github.com/tivac/aws-sig
aws sigv4
Last synced: over 1 year ago
JSON representation
🔏 AWS sigv4, optimized for size
- Host: GitHub
- URL: https://github.com/tivac/aws-sig
- Owner: tivac
- License: mit
- Created: 2018-02-02T06:22:43.000Z (over 8 years ago)
- Default Branch: main
- Last Pushed: 2024-10-01T18:51:47.000Z (over 1 year ago)
- Last Synced: 2024-10-12T00:52:12.949Z (over 1 year ago)
- Topics: aws, sigv4
- Language: JavaScript
- Homepage:
- Size: 1.35 MB
- Stars: 7
- Watchers: 4
- Forks: 3
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# 🔏 aws-sig [](https://www.npmjs.com/package/aws-sig) [](https://www.npmjs.com/package/aws-sig) [](https://www.npmjs.com/package/aws-sig) [](https://actions-badge.atrox.dev/tivac/aws-sig/goto?ref=main)
Teeny-tiny library for signing requests to Amazon Web Services using the [signature v4 signing algorithm](https://docs.aws.amazon.com/general/latest/gr/signature-version-4.html). Supports signing requests via `Authorization` header or query params.
No serious, it's really small!
 
## 🙋 Why?
I wanted something small. Really, really small. Couldn't find a small AWS v4 signing library that worked in a browser using rollup for bundling so... here we are. ¯\\_(ツ)\_/¯
## ⚙️ How?
```js
import { signedHeaders, signedQuery } from "aws-sig";
const config = {
accessKeyId : "AKIDEXAMPLE",
secretAccessKey : "wJalrXUtnFEMI/K7MDENG+bPxRfiCYEXAMPLEKEY",
// sessionTokens are optional, but correctly supported
sessionToken : "..."
};
const request = {
// These can be part of the config object or the request object
region : "us-east-1",
service : "service",
method : "GET",
url : "https://my.aws.url.that.i.need.to.hit/look/it-has/a-path-in-it-as-well",
// Headers are optional
headers : {
// Single header value
"X-Amz-Date" : "20150830T123600Z",
// Multiple headers
"X-Multiple" : [ "one", "two", "three" ]
}
// Body is optional, should be a string
body : "..."
};
const signed = signedHeaders(request, config);
/**
* signed : {
* url : "https://my.aws.url.that.i.need.to.hit/look/it-has/a-path-in-it-as-well"
* method : "GET",
* headers : {
* X-Amz-Date : "20150830T123600Z",
* "X-Multiple" : [ "one", "two", "three" ],
* Authorization : "...",
* },
* body : "...",
* }
*/
// Signing queries is identical, just uses signedQuery() instead
const config = {
accessKeyId : "AKIDEXAMPLE",
secretAccessKey : "wJalrXUtnFEMI/K7MDENG+bPxRfiCYEXAMPLEKEY",
// sessionTokens are optional, but correctly supported
sessionToken : "...",
// These can be part of the config object or the request object
region : "us-east-1",
service : "service",
};
const request = {
url : "https://my.aws.url.that.i.need.to.hit/look/it-has/a-path-in-it-as-well",
};
const signed = signedQuery(request, config);
/**
* signed : {
* url : "https://my.aws.url.that.i.need.to.hit/look/it-has/a-path-in-it-as-well?X-Amz-Algorithm=...&X-Amz-Credential=..."
* method : "GET",
* headers : {},
* body : undefined,
* }
*/
```
## 🛁 What?
Supports query params, date overrides via `X-Amz-Date` or `Date` headers, multiple header values, and probably some other features.
Tested against API Gateway so far. Your results may vary for other services, S3 seems especially fraught with peril. 💀