A lambda layer for AWS Powertools for python and typescript
Project description
AWS Lambda powertools layer
Why this project exists
This is a custom construct that will create AWS Lambda Layer with AWS Powertools for Python or NodeJS 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. 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.
⚠️ This construct uses docker to build and bundle the dependencies!
See the API for details.
import {LambdaPowertoolsLayer} from 'cdk-aws-lambda-powertools-layer';
import {RuntimeFamily } from "aws-cdk-lib/aws-lambda";
const powertoolsLayerPython = new LambdaPowertoolsLayer(this, 'TestLayer', {runtimeFamily: RuntimeFamily.PYTHON});
const powertoolsLayerNodeJS = new LambdaPowertoolsLayer(this, 'TestLayer', {runtimeFamily: RuntimeFamily.NODEJS});
Python
from cdk_aws_lambda_powertools_layer import LambdaPowertoolsLayer
powertoolsLayer = LambdaPowertoolsLayer(self, 'PowertoolsLayer')
The layer will be created during the CDK synth
step and thus requires Docker.
Install
TypeSript/JavaScript:
npm i cdk-aws-lambda-powertools-layer
Python:
pip install cdk-aws-lambda-powertools-layer
Usage
Python
A single line will create a layer with powertools for python. For NodeJS you need to specifically set the runtimeFamily: Runtime.NODEJS
property.
from cdk_aws_lambda_powertools_layer import LambdaPowertoolsLayer
powertoolsLayer = LambdaPowertoolsLayer(self, 'PowertoolsLayer')
You can then add the layer to your funciton:
from aws_cdk import aws_lambda
aws_lambda.Function(self, 'LambdaFunction',
code=aws_lambda.Code.from_asset('function'),
handler='app.handler',
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.
LambdaPowertoolsLayer(self, 'PowertoolsLayer', version='1.24.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:
LambdaPowertoolsLayer(self, 'PowertoolsLayer', include_extras=True)
Full example:
from aws_cdk import Stack, aws_lambda
from cdk_aws_lambda_powertools_layer import LambdaPowertoolsLayer
from constructs import Construct
class LayerTestStack(Stack):
def __init__(self, scope: Construct, construct_id: str, **kwargs) -> None:
super().__init__(scope, construct_id, **kwargs)
powertoolsLayer = LambdaPowertoolsLayer(
self, 'PowertoolsLayer', include_extras=True, version='1.24.0')
aws_lambda.Function(self, 'LambdaFunction',
code=aws_lambda.Code.from_asset('function'),
handler='app.handler',
layers=[powertoolsLayer])
TypeScript
Full example for TypeScript:
import { Stack, StackProps } from 'aws-cdk-lib';
import { Construct } from 'constructs';
import { LambdaPowertoolsLayer } from 'cdk-aws-lambda-powertools-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',
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-aws-lambda-powertools-layer-3.5.0.tar.gz
Algorithm | Hash digest | |
---|---|---|
SHA256 | 801dd0f3decc918ab1225ff9b6de2d0f979c492004b66511c76b70cee472c4ba |
|
MD5 | 3fb3a6df63ab554f0e3fede39a574da8 |
|
BLAKE2b-256 | e757735b79667cd1bf70d8cecdc06e3f8310c8ac67f9125786e5f6eee93a8665 |
Hashes for cdk_aws_lambda_powertools_layer-3.5.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 71427de2e99f41afde2cfaf2d2cf80d0e13cdc0d9ec392f9f5a60277812471cd |
|
MD5 | 7bae361f8ef34ed12ab63852d1838c70 |
|
BLAKE2b-256 | 497162afcf3b9d8858a7d23357ab7c6ac7d13f6044bef15dfc99d3d99245e6cd |