serverless-standalone
TypeScript icon, indicating that this package has built-in type declarations

0.0.15 • Public • Published

serverless-standalone

Emulate AWS λ and aws-sdk locally when developing your Serverless node.js project

features

  • AWS WebSocket API + @aws-sdk/client-apigatewaymanagementapi
  • Schedule

demo

  • server: pnpm dev, see examples/dev.ts
  • client: wscat -c "ws://127.0.0.1:9001/path?foo=1&foo=2"
  • aws-sdk example: node ./examples/index.mjs {connectionId}

usage

define serverless function. similar with serverless.yml.

const websocket_connect: APIGatewayProxyHandler = async (event, context) => {
  ...
}
const websocket_disconnect: APIGatewayProxyHandler = async (event, context) => {
  ...
}

const definitions: FunctionDefinition[] = [
  {
    handler: websocket_connect,
    events: [{ websocket: { route: "$connect" } }],
  },
  {
    handler: websocket_disconnect,
    events: [{ websocket: { route: "$disconnect" } }],
  },
];

start serverless-standalone at localhost.

await StandAlone.start(definitions, {
  http: 9000,
  websocket: 9001,
  api: 9002,
});

connect websocket. aws lambda handler are invoked. wscat -c "ws://127.0.0.1:9001/path?username=me&password=pw"

use aws-sdk locally.

const client = new ApiGatewayManagementApiClient({
  region: "ap-northeast-1",
  endpoint: "http://127.0.0.1:9001/",
  credentials: {
    accessKeyId: "localAccessKeyId",
    secretAccessKey: "localAecretAccessKey",
  },
});

const output = await client.send(
  new PostToConnectionCommand({
    ConnectionId: connectionId,
    Data: new TextEncoder().encode("hello"),
  }),
);

Dependencies (7)

Dev Dependencies (13)

Package Sidebar

Install

npm i serverless-standalone

Weekly Downloads

1

Version

0.0.15

License

ISC

Unpacked Size

129 kB

Total Files

59

Last publish

Collaborators

  • if1live