From a2fd618ffa6cd04337d9dbe019db1d15657b3639 Mon Sep 17 00:00:00 2001 From: hhimanshu Date: Wed, 13 Mar 2024 13:44:26 +1300 Subject: [PATCH] make lambda work with API using bun layer --- bun.lockb | Bin 134303 -> 149090 bytes cdk.context.json | 5 +++++ lambda/date.ts | 13 +++++++++++++ lambda/{index.ts => hello.ts} | 0 lib/bun-cdk-stack.ts | 31 +++++++++++++++++++++++-------- package.json | 2 ++ 6 files changed, 43 insertions(+), 8 deletions(-) create mode 100644 cdk.context.json create mode 100644 lambda/date.ts rename lambda/{index.ts => hello.ts} (100%) diff --git a/bun.lockb b/bun.lockb index 837c8bbcf10eceee785a1c48fb7054adb75130d2..4496703398c459a21462f39e0ba3e06003a654c9 100755 GIT binary patch delta 35400 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
(BqehFsL>f3+Vc|7!t|Nm@#h5v4wB2hcG4w;OWg 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 Sp%EXslT&T+de0?R`+op+0pP&^ delta 26814 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 diff --git a/cdk.context.json b/cdk.context.json new file mode 100644 index 0000000..9fc017e --- /dev/null +++ b/cdk.context.json @@ -0,0 +1,5 @@ +{ + "acknowledged-issue-numbers": [ + 29420 + ] +} diff --git a/lambda/date.ts b/lambda/date.ts new file mode 100644 index 0000000..daf04e1 --- /dev/null +++ b/lambda/date.ts @@ -0,0 +1,13 @@ +export default { + async handler(request: Request): Promise { + console.log(JSON.stringify(request)); + const localeTime = new Date().toLocaleTimeString(); + const response = JSON.stringify({ time: localeTime }); + return new Response(response, { + status: 200, + headers: { + "content-type": "application/json; charset=UTF-8", + } + }) + }, + } \ No newline at end of file diff --git a/lambda/index.ts b/lambda/hello.ts similarity index 100% rename from lambda/index.ts rename to lambda/hello.ts diff --git a/lib/bun-cdk-stack.ts b/lib/bun-cdk-stack.ts index a5b8992..7ba63df 100644 --- a/lib/bun-cdk-stack.ts +++ b/lib/bun-cdk-stack.ts @@ -1,9 +1,8 @@ import * as cdk from "aws-cdk-lib"; import { LambdaIntegration, RestApi } from "aws-cdk-lib/aws-apigateway"; -import { LayerVersion, Runtime } from "aws-cdk-lib/aws-lambda"; -import { NodejsFunction } from "aws-cdk-lib/aws-lambda-nodejs"; +import { Code, LayerVersion, Runtime, Function, Architecture } from "aws-cdk-lib/aws-lambda"; import { Construct } from "constructs"; -// import * as sqs from 'aws-cdk-lib/aws-sqs'; +import path = require("node:path"); export class BunCdkStack extends cdk.Stack { constructor(scope: Construct, id: string, props?: cdk.StackProps) { @@ -12,19 +11,35 @@ export class BunCdkStack extends cdk.Stack { const layer = LayerVersion.fromLayerVersionArn( this, "BunLayer", + // Follow https://github.com/oven-sh/bun/tree/main/packages/bun-lambda#setup + // and deploy the layer to your account + // then get the ARN from the AWS Console under Lambda -> Layers "arn:aws:lambda:us-east-1:648568751601:layer:bun:2" ); - const nodejsFunction = new NodejsFunction(this, "BunCdkFunction", { - entry: "lambda/index.ts", - handler: "handler", - runtime: Runtime.NODEJS_20_X, + const helloHandler = new Function(this, "HelloFn", { + runtime: Runtime.PROVIDED_AL2, + handler: "hello.handler", + code: Code.fromAsset(path.join(__dirname, "../", "lambda")), + architecture: Architecture.ARM_64, + layers: [layer], + }); + + const dateHandler = new Function(this, "DateFn", { + runtime: Runtime.PROVIDED_AL2, + handler: "date.handler", + code: Code.fromAsset(path.join(__dirname, "../", "lambda")), + architecture: Architecture.ARM_64, layers: [layer], }); const api = new RestApi(this, "bun-api"); - api.root.addMethod("GET", new LambdaIntegration(nodejsFunction)); + api.root.addMethod("GET", new LambdaIntegration(helloHandler)); + + const date = api.root.addResource("date"); + date.addMethod("GET", new LambdaIntegration(dateHandler)); + new cdk.CfnOutput(this, "BunApiUrl", { value: api.url ?? "Something went wrong with the deployment", }); diff --git a/package.json b/package.json index ddb9428..66ea18e 100644 --- a/package.json +++ b/package.json @@ -20,8 +20,10 @@ "typescript": "~5.3.3" }, "dependencies": { + "@types/aws-lambda": "^8.10.136", "@types/bun": "^1.0.8", "aws-cdk-lib": "2.132.0", + "aws-lambda": "^1.0.7", "bun": "^1.0.30", "bun-types": "^1.0.30", "constructs": "^10.0.0",