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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for cdk-lambda-powertools-python-layer-2.0.2.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | e9b9bc1e491b2109646801dd9bb8a32a3738edbe4fedd62ad0d1e654a2489f38 |
|
MD5 | 6f8b04a0708e304c17ec29e558f41c4a |
|
BLAKE2b-256 | 4db90cea53b3bacc5b5b9084410cadc0f4fc250754edeea4581e8d059380395f |
Hashes for cdk_lambda_powertools_python_layer-2.0.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 21b12f3275b3f11fb0edd6e5d609273c4d73d650e7110cfd741a9795e555a2d2 |
|
MD5 | e976e4fe262bad4f1f74610f0df1f4d9 |
|
BLAKE2b-256 | 05ebcc68c93e5f3847d4aad834081f02b333eda2ecc44c64ca09462f3b80d03a |