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

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.