0.0.1 • Published 2 years ago

aws-serverless-router v0.0.1

Weekly downloads
-
License
MIT
Repository
github
Last release
2 years ago

GitHub Actions Snyk Vulnerabilities for npm scoped package Quality Gate Status Coverage

npm node NPM

AWS Serverless Router

AWS Serverless Router is a general purpose routing library supporting API Gateway and SNS.

WIP

This is an initial draft, work in progress, and it should not be used in production. Specification and interfaces will change.

Features to be supported:

  • S3, SQS and DynamoDB support.
  • Etag for API Gateway.
  • Error handling.

Usage Example

import type { SNSEventRecord } from "aws-lambda";
import { ApiGatewayError, HttpRequest, HttpResponse, Router } from "aws-serverless-router";
import { getPets, getPet, updateOwnerEmail } from "src/pets";

exports.handler = async (event) => {
    const router = Router({
        cors: "https://pets.io",
    });
    router.get("/pets", async (req: HttpRequest, res: HttpResponse, event: APIGatewayEvent) => {
        console.log(event);
        res.setBody(await getPets());
    });
    router.get("/pets/{id}", async (req: HttpRequest, res: HttpResponse) => {
        const pet = await getPet(req.params?.id);
        if (!pet) {
            res.setStatusCode(404);
            return;
        }
        res.setBody(pet);
    });
    router.sns("owner-notified", async (record: SNSEventRecord): Promise<void> => {
        await updateOwnerEmail(record.Sns.Message);
    });

    try {
        return await router.route(event);
    } catch (error) {
        return {
            statusCode: 500,
            body: JSON.stringify({message: "Unhandled exception."}),
        };
    }
};