Describe the feature
The BundlingOptions in NodejsFunction construct removes AWS SDK dependencies by default.
This uses Lambda Provided SDK in the resulting function. This has higher cold start than a bundled function with AWS SDK dependencies included.
This happens, because the Node.js runtime has to do module resolution and go through multiple files while reading dependency code in the bundled function which uses Lambda Provided SDK. When SDK in bundled with the function code, the cold starts are lower as the as Node.js runtime has to read single file without any module resolution.
Use Case
The default NodeJsFunction created by CDK Lambda should have low cold starts.
Lambda customers are usually sensitive to cold starts. The bundling of the source code already reduces the function size, which is way below the Lambda Quotas limit of 50 MB.
For repro, refer README of https://github.com/trivikr/aws-cdk-lambda-nodejs-function-cold-start-latency
Here are the benchmark numbers in ms:
{
'NodejsFunction default (uses Lambda Provided SDK)': 1227.1435,
'NodejsFunction custom (uses Customer Deployed SDK)': 929.441
}
Notes:
- The benchmarks were run on count 1000 to ensure they’re reliable.
- As of 2023-05-09, it ensured that the SDK version is same in both cases, i.e. 3.188.0
- The numbers show median value for all cold start invocations. For other statistics, refer to output of measure-cold-start Step Function execution.
Proposed Solution
The default NodeJsFunction created by CDK Lambda should not exclude AWS SDK dependencies.
Other Information
No response
Acknowledgements
CDK version used
2.76.0
Environment details (OS name and version, etc.)
N/A
Describe the feature
The BundlingOptions in NodejsFunction construct removes AWS SDK dependencies by default.
This uses Lambda Provided SDK in the resulting function. This has higher cold start than a bundled function with AWS SDK dependencies included.
This happens, because the Node.js runtime has to do module resolution and go through multiple files while reading dependency code in the bundled function which uses Lambda Provided SDK. When SDK in bundled with the function code, the cold starts are lower as the as Node.js runtime has to read single file without any module resolution.
Use Case
The default NodeJsFunction created by CDK Lambda should have low cold starts.
Lambda customers are usually sensitive to cold starts. The bundling of the source code already reduces the function size, which is way below the Lambda Quotas limit of 50 MB.
For repro, refer README of https://github.com/trivikr/aws-cdk-lambda-nodejs-function-cold-start-latency
Here are the benchmark numbers in ms:
Notes:
Proposed Solution
The default NodeJsFunction created by CDK Lambda should not exclude AWS SDK dependencies.
Other Information
No response
Acknowledgements
CDK version used
2.76.0
Environment details (OS name and version, etc.)
N/A