Photo by Zac Durant
You can use the Node.js runtime to run TypeScript code in AWS Lambda. Because Node.js doesn't run TypeScript code natively, you must first transpile your TypeScript code into JavaScript. Then, use the JavaScript files to deploy your function code to Lambda. Your code runs in an environment that includes the AWS SDK for JavaScript.
In order to write a Lambda function in TypeScript and provision it with CDK, we have to use the NodejsFunction construct, which uses esbuild to automatically transpile and bundle our code.
Let see how to do this.
Infrastructure of the Lambda function
export class CdkStarterStackStack extends Stack {
constructor(scope: Construct, id: string, props?: StackProps) {
super(scope, id, props)
// lambda function
const testFn = new NodejsFunction(this, 'MyFunction', {
entry: './lambda/index.ts',
runtime: lambda.Runtime.NODEJS_14_X,
handler: 'main',
bundling: {
externalModules: ['aws-sdk'],
minify: false,
},
})
}
}
Let's go over the code.
The Lambda function uses the NodejsFunction construct, which automatically transpiles and bundles our code, regardless if it's written in JavaScript or TypeScript
entry
Path to the entry file (JavaScript or TypeScript).bundling options: no minify, no sourcemap, all modules are bundled
Other parameters are the same as the NodejsFunction construct.
The code for this article is available on GitHub
Lambda function writing in TypeScript
import { APIGatewayProxyEventV2, APIGatewayProxyResultV2 } from 'aws-lambda'
export async function main(event: APIGatewayProxyEventV2): Promise<APIGatewayProxyResultV2> {
// this response will be returned to the API Gateway
// it support both rest api and http api
return {
body: JSON.stringify({ message: 'Hello from Lambda!' }),
statusCode: 200,
isBase64Encoded: false,
headers: {
'Content-Type': 'application/json',
},
}
}
This is simple Lambda function written in TypeScript.
Deploying the Lambda function
Run the following command to deploy the Lambda function.
yarn deploy
Now the Lambda function is deployed to AWS Lambda. You can test it by lambda console.
Cleaning up
Don't forget to delete the Lambda function when you're done.
npx cdk destroy
Thanks for reading! π
Top comments (0)