Nocturnal Pumpkin Maelstrom
Learn about our RFC process, Open RFC meetings & more.Join in the discussion! »

got4aws

1.1.0 • Public • Published

got4aws Build Status

Convenience wrapper for Got to interact with AWS v4 signed APIs

Install

$ npm install got4aws

Usage

Instead of:

import got from 'got';
import * as aws4 from 'aws4';
import * as url from 'url';
 
(async () => {
    const {protocol, host, path} = url.parse('https://12abc34.execute-api.us-east-1.amazonaws.com/v0');
 
    const request = {
        protocol,
        host,
        path,
        responseType: 'json'
    };
 
    aws4.sign(request);
 
    const {body} = await got.get(request);
 
    console.log(body);
    //=> {status: 'ok'}
})();

You can do:

import got4aws from 'got4aws';
 
const got = got4aws();
 
(async () => {
    const {body} = await got.get('https://12abc34.execute-api.us-east-1.amazonaws.com/v0');
 
    console.log(body);
    //=> {status: 'ok'}
})();

If you want to load credentials from somewhere else, you can provide extra options to the factory function.

import got4aws from 'got4aws';
 
// Load credentials from `~/.aws/credentials`
const got = got4aws({
    providers: new AWS.SharedIniFileCredentials({profile: 'myProfile'})
});
 
(async () => {
    const {body} = await got.get('https://12abc34.execute-api.us-east-1.amazonaws.com/v0');
 
    console.log(body);
    //=> {status: 'ok'}
})();

If you want to invoke an API Gateway endpoint with a custom domain, you will have to set the service and region as well because they can't be inferred.

import got4aws from 'got4aws';
 
const got = got4aws({
    providers: new AWS.SharedIniFileCredentials({profile: 'myProfile'}),
    service: 'execute-api',
    region: 'eu-west-1'
});
 
(async () => {
    const {body} = await got.get('https://api.unicorn.com/v0');
 
    console.log(body);
    //=> {status: 'ok'}
})();

API

got4aws(options?)

Returns a Got instance with a default responseType set to json.

options

providers

Type: Credentials | Credentials[]
Default: EnvironmentCredentials

A provider or a list of providers used to search for AWS credentials. If no providers are provided, it will use the EnvironmentCredentials provider.

See the CredentialProviderChain documentation for more information.

service

Type: string
Default: inferred through URL

The AWS service the request is being signed for. Will try to be inferred by the URL if not provided.

For example, when signing a request for API Gateway with a custom domain, this should be execute-api.

region

Type: string
Default: inferred through URL

The region of the service being invoked. If it could not be inferred through the URL, it will default to us-east-1.

Install

npm i got4aws

DownloadsWeekly Downloads

689

Version

1.1.0

License

MIT

Unpacked Size

16.9 kB

Total Files

9

Last publish

Collaborators

  • avatar