forked from @aws-cdk/aws-lambda-nodejs
This library provides constructs for Node.js Lambda function bundled using webpack.
-
install using yarn:
yarn add -D aws-cdk-webpack-lambda-function @aws-cdk/core @aws-cdk/aws-lambda webpack webpack-cli # npm i -D aws-cdk-webpack-lambda-function @aws-cdk/core @aws-cdk/aws-lambda webpack webpack-cli
Note: webpack@5 required.
-
add webpack.config.js:
module.exports = { mode: "production", // production or development target: "node", externals: [/^aws-sdk(\/.+)?$/], // important!!! devtool: "source-map", // if needed optimization: { minimize: false }, // if needed // for TypeScript module: { rules: [ { test: /\.ts$/, use: { loader: "ts-loader", options: { configFile: "your/path/to/tsconfig.json", // if needed // colors: true, // logInfoToStdOut: true, // logLevel: 'INFO', transpileOnly: true, }, }, exclude: /node_modules/, }, ], }, resolve: { extensions: [".js", ".ts"], }, };
-
(Optional) add tsconfig.json for lambda
{ "extends": "../ ... /tsconfig.json", "compilerOptions": { "importHelpers": false, "target": "ES2018", "noEmit": false } }
-
your cdk source code:
import { WebpackFunction } from "aws-cdk-webpack-lambda-function"; new WebpackFunction(this, "YourFunction", { entry: "your/path/to/function.ts", config: "your/path/to/webpack.config.js", });
Path to the entry file (JavaScript or TypeScript).
Path to webpack config file.
The name of the exported handler in the entry file.
default: "handler"
The runtime environment. Only runtimes of the Node.js family are supported.
default: NODEJS_14
The build directory.
default: .build
in the entry file directory
Control whether the build output is placed in a unique directory (sha256 hash) or not. This can be disabled to simplify development and debugging.
default: true
All other properties of lambda.Function are supported, see also the AWS Lambda construct library.
yarn build
yarn test