aws-cdk-webpack-lambda-function

This library provides constructs for Node.js Lambda function bundled using webpack.

Usage no npm install needed!

<script type="module">
  import awsCdkWebpackLambdaFunction from 'https://cdn.skypack.dev/aws-cdk-webpack-lambda-function';
</script>

README

aws-cdk-webpack-lambda-function

forked from @aws-cdk/aws-lambda-nodejs

This library provides constructs for Node.js Lambda function bundled using webpack.

Quick Start

  1. 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.

  2. 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"],
      },
    };
    
  3. (Optional) add tsconfig.json for lambda

    {
      "extends": "../ ... /tsconfig.json",
      "compilerOptions": {
        "importHelpers": false,
        "target": "ES2018",
        "noEmit": false
      }
    }
    
  4. 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",
    });
    

Options

entry: string (required)

Path to the entry file (JavaScript or TypeScript).

config: string (required)

Path to webpack config file.

handler: string

The name of the exported handler in the entry file.

default: "handler"

runtime: lambda.Runtime

The runtime environment. Only runtimes of the Node.js family are supported.

default: NODEJS_14

buildDir: string

The build directory.

default: .build in the entry file directory

ensureUniqueBuildPath: boolean

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

...other options

All other properties of lambda.Function are supported, see also the AWS Lambda construct library.

Run tests

yarn build
yarn test