Skip to main content

A lambda layer for AWS Powertools for python

Project description

Lambda powertools python layer

Why this project exists

This is a custom construct that will create AWS Lambda Layer with AWS Powertools for Python library. There are different ways how to create a layer and when working with CDK you need to install the library, create a zip file and wire it correctly. With this construct you don't have to care about packaging and dependency management, just create a construct and add it to your function. The construct is an extension of the existing LayerVersion construct from the CDK library, so you have access to all fields and methods.

import { LambdaPowertoolsLayer } from 'cdk-lambda-powertools-python-layer';

const powertoolsLayer = new LambdaPowertoolsLayer(this, 'TestLayer');

Install

TypeSript/JavaScript:

npm i cdk-lambda-powertools-python-layer

Python:

pip install cdk-lambda-powertools-python-layer

Usage

A single line will create a layer with powertools for python:

import { LambdaPowertoolsLayer } from 'cdk-lambda-powertools-python-layer';

const powertoolsLayer = new LambdaPowertoolsLayer(this, 'TestLayer', {
  version: '1.22.0',
});

You can then add the layer to your funciton:

new Function(this, 'LambdaFunction', {
  code: Code.fromAsset(path.join('./function')),
  handler: 'app.handler',
  runtime: Runtime.PYTHON_3_9,
  layers: [powertoolsLayer],
});

You can specify the powertools version by passing the optional version paramter, otherwise the construct will take the latest version from pypi repository.

new LambdaPowertoolsLayer(this, 'PowertoolsLayer', {
  version: '1.21.0'
});

Additionally, powertools have extras depenedncies such as Pydantic, documented here. This is not included by default, and you have to set this option in the construct definition if you need it:

new LambdaPowertoolsLayer(this, 'PowertoolsLayer', {
  includeExtras: true
});

Full example:

import { Stack, StackProps } from 'aws-cdk-lib';
import { Construct } from 'constructs';
import { LambdaPowertoolsLayer } from 'cdk-lambda-powertools-python-layer';
import { Code, Function, Runtime } from 'aws-cdk-lib/aws-lambda';
import * as path from 'path';

export class CdkPowertoolsExampleStack extends Stack {
  constructor(scope: Construct, id: string, props?: StackProps) {
    super(scope, id, props);

    const powertoolsLayer = new LambdaPowertoolsLayer(this, 'TestLayer', {
      version: '1.22.0',
      includeExtras: true
    });

    new Function(this, 'LambdaFunction', {
      code: Code.fromAsset(path.join('./function')),
      handler: 'app.handler',
      runtime: Runtime.PYTHON_3_9,
      layers: [powertoolsLayer],
    });
  }
}

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

cdk-lambda-powertools-python-layer-2.0.2.tar.gz (23.2 kB view hashes)

Uploaded Source

Built Distribution

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page