Skip to content

Commit 3b5c799

Browse files
flochazFlorian Chazal
and
Florian Chazal
authored
chore(layer): fix bundling and e2e tests by manually setting hash of asset (#1116)
Co-authored-by: Florian Chazal <[email protected]>
1 parent d4174eb commit 3b5c799

File tree

5 files changed

+40
-19
lines changed

5 files changed

+40
-19
lines changed

Diff for: layer-publisher/package-lock.json

+15-1
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Diff for: layer-publisher/package.json

+2-1
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@
3030
"aws-cdk-lib": "2.25.0",
3131
"constructs": "^10.0.0",
3232
"if-node-version": "^1.1.1",
33-
"source-map-support": "^0.5.16"
33+
"source-map-support": "^0.5.16",
34+
"ts-md5": "^1.3.1"
3435
}
3536
}

Diff for: layer-publisher/src/powertools-typescript-layer.ts

+20-15
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ import * as path from 'path';
22
import { aws_lambda as lambda } from 'aws-cdk-lib';
33
import { Construct } from 'constructs';
44
import { execSync } from 'child_process';
5+
import { Md5 } from 'ts-md5';
56

67
export interface PowerToolsTypeScriptLayerProps {
78
/**
@@ -17,10 +18,28 @@ export interface PowerToolsTypeScriptLayerProps {
1718

1819
export 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
},

Diff for: layer-publisher/tests/e2e/happy-case.test.lambda.ts

+1-1
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ exports.handler = function (_event: never, _ctx: unknown): void {
3131

3232
if (packageJSON.version != process.env.POWERTOOLS_PACKAGE_VERSION) {
3333
throw new Error(
34-
`Package version mismatch: \${packageJSON.version} != \${process.env.POWERTOOLS_PACKAGE_VERSION}`
34+
`Package version mismatch: ${packageJSON.version} != ${process.env.POWERTOOLS_PACKAGE_VERSION}`
3535
);
3636
}
3737
} catch (error) {

Diff for: layer-publisher/tests/unit/__snapshots__/layer-publisher.test.ts.snap

+2-1
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,9 @@ Object {
3232
"S3Bucket": Object {
3333
"Fn::Sub": "cdk-hnb659fds-assets-\${AWS::AccountId}-\${AWS::Region}",
3434
},
35-
"S3Key": "dfbb723532549b2040a663602bbe51ab6b3f16dfd063eafc5bbd7e64b13f997d.zip",
35+
"S3Key": "c2f621503b147cecccf2e6cc6df420a8f11ee29ae042d2c1f523cf5db3f47ca2.zip",
3636
},
37+
"Description": "Lambda Powertools for TypeScript version 1.0.1",
3738
"LayerName": "AWSLambdaPowertoolsTypeScript",
3839
},
3940
"Type": "AWS::Lambda::LayerVersion",

0 commit comments

Comments
 (0)