Package: cdk-lambda-powertools-python-layer
Lambda powertools python layerWhy this project existsThis 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
existingLayerVersionconstruct
from the CDK library, so you have access to all fields and methods.See theAPIfor details.import{LambdaPowertoolsLayer}from'cdk-lambda-powertools-python-layer';constpowertoolsLayer=newLambdaPowertoolsLayer(this,'TestLayer');Pythonfromcdk_lambda_powertools_python_layerimportLambdaPowertoolsLayerpowertoolsLayer=LambdaPowertoolsLayer(self,'PowertoolsLayer')The layer will be created during the CDKsynthstep and thus requires Docker.InstallTypeSript/JavaScript:npmicdk-lambda-powertools-python-layerPython:pipinstallcdk-lambda-powertools-python-layerUsagePythonA single line will create a layer with powertools for python:fromcdk_lambda_powertools_python_layerimportLambdaPowertoolsLayerpowertoolsLayer=LambdaPowertoolsLayer(self,'PowertoolsLayer')You can then add the layer to your funciton:fromaws_cdkimportaws_lambdaaws_lambda.Function(self,'LambdaFunction',code=aws_lambda.Code.from_asset('function'),handler='app.handler',runtime=aws_lambda.Runtime.PYTHON_3_9,layers=[powertoolsLayer])You can specify the powertools version by passing the optionalversionparamter, 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:fromaws_cdkimportStack,aws_lambdafromcdk_lambda_powertools_python_layerimportLambdaPowertoolsLayerfromconstructsimportConstructclassLayerTestStack(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',runtime=aws_lambda.Runtime.PYTHON_3_9,layers=[powertoolsLayer])TypeScriptFull example for TypeScript: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*aspathfrom'path';exportclassCdkPowertoolsExampleStackextendsStack{constructor(scope:Construct,id:string,props?:StackProps){super(scope,id,props);constpowertoolsLayer=newLambdaPowertoolsLayer(this,'TestLayer',{version:'1.22.0',includeExtras:true});newFunction(this,'LambdaFunction',{code:Code.fromAsset(path.join('./function')),handler:'app.handler',runtime:Runtime.PYTHON_3_9,layers:[powertoolsLayer],});}}