JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 263
  • Score
    100M100P100Q91609F
  • License MIT

AWS Lambda bun runtime layer and construct

Package Exports

  • @beesolve/lambda-bun-runtime
  • @beesolve/lambda-bun-runtime/lib/index.js

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (@beesolve/lambda-bun-runtime) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

Lambda bun runtime

View on Construct Hub

This repository contains custom built bun runtime for AWS Lambda. It also contains CDK constructs for BunFunction which uses BunLambdaLayer.

Bun is a fast JavaScript runtime.

Current bun version: 1.3.9

Installation

You can install current version of our Lambda bun runtime from npm like this:

npm i @beesolve/lambda-bun-runtime

Usage

There are two constructs which you can use right ahead - BunFunction which depends on BunLambdaLayer:

import { BunLambdaLayer, BunFunction } from '@beesolve/lambda-bun-runtime';
import { Duration } from "aws-cdk-lib";

const bunLayer = new BunLambdaLayer(this, "BunLayer");

const apiHandler = new BunFunction(this, "ApiHandler", {
  entrypoint: `${__dirname}/dist/api.js`,
  memorySize: 1024,
  timeout: Duration.seconds(10),
  environment: {
    STAGE: 'prod',
  },
  bunLayer,
});

You can pass additional properties to both BunLambdaLayer and BunFunction.

The code for BunFunction needs to be built beforehand.

We recommend to use following build script as quick start:

// build.ts
import * as Bun from "bun";
import { rmSync } from "node:fs";

console.time("Built.");

rmSync("dist", { force: true, recursive: true });

await Bun.build({
  entrypoints: ["api.ts"],
  outdir: "dist",
  target: "bun", // this is important as the built code runs in Bun environment
  minify: true,
  splitting: true,
  sourcemap: "inline",
});

console.timeEnd("Built.");

When you persist above build script in build.ts you can then run it with bun run build.ts.

Why the fork?

This runtime is fork of official bun-lambda. It was created because it seems that Lambda is not very high on Bun's roadmap and there are multiple pull requests which haven't been merged.

The usage is the same as in official runtime.

Here are changes which were added on top of the original runtime:

Roadmap