Building Lambda functions with TypeScript
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, with credentials from an AWS Identity and Access Management (IAM) role that you manage. To learn more about the SDK versions included with the Node.js runtimes, see Runtime-included SDK versions.
Lambda supports the following Node.js runtimes.
|
Node.js 24 |
nodejs24.x |
Amazon Linux 2023 |
Apr 30, 2028 |
Jun 1, 2028 |
Jul 1, 2028 |
|
Node.js 22 |
nodejs22.x |
Amazon Linux 2023 |
Apr 30, 2027 |
Jun 1, 2027 |
Jul 1, 2027 |
Setting up a TypeScript development environment
Use a local integrated development environment (IDE) or text editor to write your TypeScript function code. You can’t create TypeScript code on the Lambda console.
You can use either esbuild or Microsoft's TypeScript compiler (tsc) to transpile your TypeScript code into JavaScript. The AWS Serverless Application Model (AWS SAM) and the AWS Cloud Development Kit (AWS CDK) both use esbuild.
When using esbuild, consider the following:
-
There are several TypeScript caveats.
-
You must configure your TypeScript transpilation settings to match the Node.js runtime that you plan to use. For more information, see Target in the esbuild documentation. For an example of a tsconfig.json file that demonstrates how to target a specific Node.js version supported by Lambda, refer to the TypeScript GitHub repository.
-
esbuild doesn’t perform type checks. To check types, use the tsc compiler. Run tsc -noEmit or add a "noEmit" parameter to your tsconfig.json file, as shown in the following example. This configures tsc to not emit JavaScript files. After checking types, use esbuild to convert the TypeScript files into JavaScript.
Type definitions for Lambda
The @types/aws-lambda package provides type definitions for Lambda functions. Install this package when your function uses any of the following:
-
Common AWS event sources, such as:
-
APIGatewayProxyEvent: For Amazon API Gateway proxy integrations
-
SNSEvent: For Amazon Simple Notification Service notifications
-
SQSEvent: For Amazon Simple Queue Service messages
-
S3Event: For S3 trigger events
-
DynamoDBStreamEvent: For Amazon DynamoDB Streams
-
-
The Lambda Context object
-
The callback handler pattern
To add the Lambda type definitions to your function, install @types/aws-lambda as a development dependency:
Then, import the types from aws-lambda:
The import ... from 'aws-lambda' statement imports the type definitions. It does not import the aws-lambda npm package, which is an unrelated third-party tool. For more information, see aws-lambda in the DefinitelyTyped GitHub repository.
You don't need @types/aws-lambda when using your own custom type definitions. For an example function that defines its own type for an event object, see Example TypeScript Lambda function code.
Javascript is disabled or is unavailable in your browser.
To use the Amazon Web Services Documentation, Javascript must be enabled. Please refer to your browser's Help pages for instructions.