Package: cdk-aws-lambda-powertools-layer
Powertools for AWS Lambda LayerWhy this project existsThis is a custom construct that will create AWS Lambda Layer with Powertools for AWS Lambda 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
existingLayerVersionconstruct
from the CDK library, so you have access to all fields and methods.⚠️This construct uses docker to build and bundle the dependencies!See theAPIfor details.import{LambdaPowertoolsLayer}from'cdk-aws-lambda-powertools-layer';import{RuntimeFamily}from"aws-cdk-lib/aws-lambda";constpowertoolsLayerPython=newLambdaPowertoolsLayer(this,'TestLayer',{runtimeFamily:RuntimeFamily.PYTHON});constpowertoolsLayerNodeJS=newLambdaPowertoolsLayer(this,'TestLayer',{runtimeFamily:RuntimeFamily.NODEJS});Pythonfromcdk_aws_lambda_powertools_layerimportLambdaPowertoolsLayerpowertoolsLayer=LambdaPowertoolsLayer(self,'PowertoolsLayer')The layer will be created during the CDKsynthstep and thus requires Docker.InstallTypeSript/JavaScript:npmicdk-aws-lambda-powertools-layerPython:pipinstallcdk-aws-lambda-powertools-layerUsagePythonA single line will create a layer with Powertools for AWS Lambda (Python). For NodeJS you need to specifically set theruntimeFamily: Runtime.NODEJSproperty.fromcdk_aws_lambda_powertools_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',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_aws_lambda_powertools_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',layers=[powertoolsLayer])TypeScriptFull 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*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',layers:[powertoolsLayer],});}}