https://github.com/millihq/sammy
A Node.js wrapper for AWS SAM CLI for local testing of Lambda functions.
https://github.com/millihq/sammy
aws aws-lambda testing
Last synced: 12 months ago
JSON representation
A Node.js wrapper for AWS SAM CLI for local testing of Lambda functions.
- Host: GitHub
- URL: https://github.com/millihq/sammy
- Owner: milliHQ
- License: apache-2.0
- Created: 2021-01-26T19:22:24.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2023-01-07T10:41:32.000Z (over 3 years ago)
- Last Synced: 2025-06-21T05:50:47.161Z (about 1 year ago)
- Topics: aws, aws-lambda, testing
- Language: TypeScript
- Homepage:
- Size: 237 KB
- Stars: 2
- Watchers: 1
- Forks: 3
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# Sammy
A Node.js wrapper for [AWS SAM CLI](https://aws.amazon.com/serverless/sam/) for local testing of Lambda functions.
## Usage
```sh
npm i -D @millihq/sammy # npm
yarn add -D @millihq/sammy # or yarn
```
Assuming you have a Lambda function with the following content:
```js
// 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:
```ts
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](./LICENSE) for details.