@@ -2,6 +2,7 @@ import * as path from 'path';
22import { aws_lambda as lambda } from 'aws-cdk-lib' ;
33import { Construct } from 'constructs' ;
44import { execSync } from 'child_process' ;
5+ import { Md5 } from 'ts-md5' ;
56
67export interface PowerToolsTypeScriptLayerProps {
78 /**
@@ -17,10 +18,28 @@ export interface PowerToolsTypeScriptLayerProps {
1718
1819export class PowerToolsTypeScriptLayer extends lambda . LayerVersion {
1920 public constructor ( scope : Construct , id : string , props ?: PowerToolsTypeScriptLayerProps ) {
21+ const version = props ?. version ?? 'latest' ;
22+ console . log ( `publishing layer ${ props ?. layerVersionName } version : ${ version } ` ) ;
23+
24+ const commands = [
25+ 'mkdir nodejs' ,
26+ 'cd nodejs' ,
27+ 'npm init -y' ,
28+ `npm install --save \
29+ @aws-lambda-powertools/commons@${ version } \
30+ @aws-lambda-powertools/logger@${ version } \
31+ @aws-lambda-powertools/metrics@${ version } \
32+ @aws-lambda-powertools/tracer@${ version } ` ,
33+ 'rm package.json package-lock.json' ,
34+ ] ;
35+ const commandJoined = commands . join ( ' && ' ) ;
36+
2037 super ( scope , id , {
2138 layerVersionName : props ?. layerVersionName ,
39+ description : `Lambda Powertools for TypeScript version ${ props ?. version } ` ,
2240 compatibleRuntimes : [ lambda . Runtime . NODEJS_12_X , lambda . Runtime . NODEJS_14_X , lambda . Runtime . NODEJS_16_X ] ,
2341 code : lambda . Code . fromAsset ( path . join ( __dirname , '.' ) , {
42+ assetHash : Md5 . hashStr ( commandJoined ) ,
2443 bundling : {
2544 image : lambda . Runtime . NODEJS_12_X . bundlingImage ,
2645 local : {
@@ -31,21 +50,7 @@ export class PowerToolsTypeScriptLayer extends lambda.LayerVersion {
3150 return false ;
3251 }
3352
34- const commands = [
35- 'mkdir nodejs && cd nodejs' ,
36- 'npm init -y' ,
37- `npm install @aws-lambda-powertools/commons@${
38- props ?. version ?? 'latest'
39- } @aws-lambda-powertools/logger@${ props ?. version ?? 'latest' } @aws-lambda-powertools/metrics@${
40- props ?. version ?? 'latest'
41- } @aws-lambda-powertools/tracer@${ props ?. version ?? 'latest' } `,
42- 'rm package.json package-lock.json' ,
43- 'cd ..' ,
44- `cp -a nodejs ${ outputDir } ` ,
45- `rm -rf nodejs` ,
46- ] ;
47-
48- execSync ( commands . join ( ' && ' ) ) ;
53+ execSync ( commandJoined , { cwd : outputDir } ) ;
4954
5055 return true ;
5156 } ,
0 commit comments