@@ -2,6 +2,7 @@ import * as path from 'path';
2
2
import { aws_lambda as lambda } from 'aws-cdk-lib' ;
3
3
import { Construct } from 'constructs' ;
4
4
import { execSync } from 'child_process' ;
5
+ import { Md5 } from 'ts-md5' ;
5
6
6
7
export interface PowerToolsTypeScriptLayerProps {
7
8
/**
@@ -17,10 +18,28 @@ export interface PowerToolsTypeScriptLayerProps {
17
18
18
19
export class PowerToolsTypeScriptLayer extends lambda . LayerVersion {
19
20
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
+
20
37
super ( scope , id , {
21
38
layerVersionName : props ?. layerVersionName ,
39
+ description : `Lambda Powertools for TypeScript version ${ props ?. version } ` ,
22
40
compatibleRuntimes : [ lambda . Runtime . NODEJS_12_X , lambda . Runtime . NODEJS_14_X , lambda . Runtime . NODEJS_16_X ] ,
23
41
code : lambda . Code . fromAsset ( path . join ( __dirname , '.' ) , {
42
+ assetHash : Md5 . hashStr ( commandJoined ) ,
24
43
bundling : {
25
44
image : lambda . Runtime . NODEJS_12_X . bundlingImage ,
26
45
local : {
@@ -31,21 +50,7 @@ export class PowerToolsTypeScriptLayer extends lambda.LayerVersion {
31
50
return false ;
32
51
}
33
52
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 } ) ;
49
54
50
55
return true ;
51
56
} ,
0 commit comments