Skip to content
/ sammy Public

A Node.js wrapper for AWS SAM CLI for local testing of Lambda functions.

License

Notifications You must be signed in to change notification settings

milliHQ/sammy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

May 20, 2022
7a2c72b · May 20, 2022

History

40 Commits
May 20, 2022
May 20, 2022
Sep 6, 2021
May 20, 2022
Mar 14, 2021
Jan 30, 2021
Aug 30, 2021
Apr 9, 2021
May 20, 2022
Sep 6, 2021
May 20, 2022
Aug 30, 2021
May 20, 2022
Aug 31, 2021
May 20, 2022
May 20, 2022

Repository files navigation

Sammy

A Node.js wrapper for AWS SAM CLI for local testing of Lambda functions.

Usage

npm i -D @millihq/sammy     # npm
yarn add -D @millihq/sammy  # or yarn

Assuming you have a Lambda function with the following content:

// handler.js
exports.handler = async function (event, context) {
  return {
    isBase64Encoded: false,
    statusCode: 200,
    body: 'Hello World!',
    headers: {
      'content-type': 'application/json',
    },
  };
};

which is packaged into a compressed zip file called lambda.zip.

Run lambda locally with API-Gateway

You can now start the Lambda function locally and access it through an API-Endpoint:

import * as path from 'path';

import { generateAPISAM, APISAMGenerator } from '@millihq/sammy';

const lambdaSAM = await generateAPISAM({
  lambdas: {
    first: {
      filename: 'lambda.zip',
      handler: 'handler.handler',
      runtime: 'nodejs16.x',
      route: '/test',
      method: 'get',
    },
  },
  cwd: process.cwd(),
});

const response = await lambdaSAM.sendApiGwRequest('/test');
console.log(await response.text());
// => Hello World!

License

Apache-2.0 - see LICENSE for details.