Skip to content

Simple pool of workers to make API calls using the AWS SDK, while leveraging Worker threads from Node.js.

License

Notifications You must be signed in to change notification settings

org-formation/worker-pool-aws-sdk

Repository files navigation

Worker Pool for AWS SDK

License MIT contributions welcome Project Status: WIP – Initial development

Simple pool of workers to make API calls using the AWS SDK, while leveraging Node.js Worker threads.


GitHub Workflow Status Codecov GitHub release Node.js version

This library uses Node.js Worker threads (it depends more specifically on Piscina.js).

Usage

Example

const STS = require('aws-sdk/clients/sts')
const WorkerPoolAwsSdk = require('worker-pool-aws-sdk');

const workerPool = new WorkerPoolAwsSdk();

(async function () {
  const sts = new STS({ region: 'us-east-1' });
  const result = await workerPool.runAwsTask({
    name: 'sts',
    options: sts.config,
    operation: 'getCallerIdentity',
  });
  console.log(result);
  /*
    Prints result in this shape:
    {
      Account: "123456789012", 
      Arn: "arn:aws:iam::123456789012:user/Alice", 
      UserId: "AKIAI44QH8DHBEXAMPLE"
    }
  */
})();

Benchmark

Total duration of SAM local lambda with and without worker threads running on a Quad-core machine.

Without worker threads (40 calls)

  1. 20073.56 ms
  2. 20373.04 ms
  3. 23854.06 ms

With worker threads (40 calls)

  1. 23107.90 ms
  2. 24376.02 ms
  3. 24748.50 ms

Without worker threads (400 calls)

  1. 160664.08 ms
  2. 170526.89 ms

With worker threads (400 calls)

  1. 160884.88 ms
  2. 161868.81 ms

Development

Check out the master branch and install dependencies to get started:

npm ci --optional

Now that you have the dependencies installed, you can run this command in the root folder to compile the whole project.

npm run build

Linting is done via TypeScript ESLint and running unit tests via Jest. The continuous integration runs these checks, but you can run them locally with:

npm run lint
npm test

License

This library is licensed under the MIT License.

About

Simple pool of workers to make API calls using the AWS SDK, while leveraging Worker threads from Node.js.

Topics

Resources

License

Stars

Watchers

Forks