Skip to content

Commit d07d0b9

Browse files
committed
fix migration middy
1 parent ede1c40 commit d07d0b9

File tree

7 files changed

+50
-55
lines changed

7 files changed

+50
-55
lines changed

lambdas/functions/control-plane/src/lambda.test.ts

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
1-
import { captureLambdaHandler, logger } from '@aws-github-runner/aws-powertools-util';
1+
import { logger } from '@aws-github-runner/aws-powertools-util';
22
import { Context, SQSEvent, SQSRecord } from 'aws-lambda';
33

4-
import { addMiddleware, adjustPool, scaleDownHandler, scaleUpHandler, ssmHousekeeper, jobRetryCheck } from './lambda';
4+
import { adjustPool, scaleDownHandler, scaleUpHandler, ssmHousekeeper, jobRetryCheck } from './lambda';
55
import { adjust } from './pool/pool';
66
import ScaleError from './scale-runners/ScaleError';
77
import { scaleDown } from './scale-runners/scale-down';
88
import { ActionRequestMessage, scaleUp } from './scale-runners/scale-up';
99
import { cleanSSMTokens } from './scale-runners/ssm-housekeeper';
1010
import { checkAndRetryJob } from './scale-runners/job-retry';
11-
import { describe, it, expect, vi, MockedFunction, beforeEach } from 'vitest';
11+
import { describe, it, expect, vi, beforeEach } from 'vitest';
1212

1313
const body: ActionRequestMessage = {
1414
eventType: 'workflow_job',
@@ -260,14 +260,6 @@ describe('Adjust pool.', () => {
260260
});
261261
});
262262

263-
describe('Test middleware', () => {
264-
it('Should have a working middleware', async () => {
265-
const mockedLambdaHandler = captureLambdaHandler as MockedFunction<typeof captureLambdaHandler>;
266-
mockedLambdaHandler.mockReturnValue({ before: vi.fn(), after: vi.fn(), onError: vi.fn() });
267-
expect(addMiddleware).not.toThrowError();
268-
});
269-
});
270-
271263
describe('Test ssm housekeeper lambda wrapper.', () => {
272264
it('Invoke without errors.', async () => {
273265
vi.mocked(cleanSSMTokens).mockResolvedValue();

lambdas/functions/control-plane/src/lambda.ts

Lines changed: 15 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import { type ActionRequestMessage, type ActionRequestMessageSQS, scaleUp } from
1010
import { SSMCleanupOptions, cleanSSMTokens } from './scale-runners/ssm-housekeeper';
1111
import { checkAndRetryJob } from './scale-runners/job-retry';
1212

13-
export async function scaleUpHandler(event: SQSEvent, context: Context): Promise<SQSBatchResponse> {
13+
async function scaleUpHandlerFn(event: SQSEvent, context: Context): Promise<SQSBatchResponse> {
1414
setContext(context, 'lambda.ts');
1515
logger.logEventIfEnabled(event);
1616

@@ -64,7 +64,7 @@ export async function scaleUpHandler(event: SQSEvent, context: Context): Promise
6464
}
6565
}
6666

67-
export async function scaleDownHandler(event: unknown, context: Context): Promise<void> {
67+
async function scaleDownHandlerFn(event: unknown, context: Context): Promise<void> {
6868
setContext(context, 'lambda.ts');
6969
logger.logEventIfEnabled(event);
7070

@@ -75,7 +75,7 @@ export async function scaleDownHandler(event: unknown, context: Context): Promis
7575
}
7676
}
7777

78-
export async function adjustPool(event: PoolEvent, context: Context): Promise<void> {
78+
async function adjustPoolFn(event: PoolEvent, context: Context): Promise<void> {
7979
setContext(context, 'lambda.ts');
8080
logger.logEventIfEnabled(event);
8181

@@ -87,19 +87,7 @@ export async function adjustPool(event: PoolEvent, context: Context): Promise<vo
8787
return Promise.resolve();
8888
}
8989

90-
export const addMiddleware = () => {
91-
const handler = captureLambdaHandler(tracer);
92-
if (!handler) {
93-
return;
94-
}
95-
middy(scaleUpHandler).use(handler);
96-
middy(scaleDownHandler).use(handler);
97-
middy(adjustPool).use(handler);
98-
middy(ssmHousekeeper).use(handler);
99-
};
100-
addMiddleware();
101-
102-
export async function ssmHousekeeper(event: unknown, context: Context): Promise<void> {
90+
async function ssmHousekeeperFn(event: unknown, context: Context): Promise<void> {
10391
setContext(context, 'lambda.ts');
10492
logger.logEventIfEnabled(event);
10593
const config = JSON.parse(process.env.SSM_CLEANUP_CONFIG) as SSMCleanupOptions;
@@ -111,6 +99,17 @@ export async function ssmHousekeeper(event: unknown, context: Context): Promise<
11199
}
112100
}
113101

102+
// Export wrapped handlers for middy v7
103+
const handler = captureLambdaHandler(tracer);
104+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
105+
export const scaleUpHandler = handler ? middy(scaleUpHandlerFn).use(handler as any) : scaleUpHandlerFn;
106+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
107+
export const scaleDownHandler = handler ? middy(scaleDownHandlerFn).use(handler as any) : scaleDownHandlerFn;
108+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
109+
export const adjustPool = handler ? middy(adjustPoolFn).use(handler as any) : adjustPoolFn;
110+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
111+
export const ssmHousekeeper = handler ? middy(ssmHousekeeperFn).use(handler as any) : ssmHousekeeperFn;
112+
114113
export async function jobRetryCheck(event: SQSEvent, context: Context): Promise<void> {
115114
setContext(context, 'lambda.ts');
116115
logger.logEventIfEnabled(event);

lambdas/functions/gh-agent-syncer/src/lambda.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,8 @@ import { Context } from 'aws-lambda';
55

66
import { sync } from './syncer/syncer';
77

8-
middy(handler).use(captureLambdaHandler(tracer));
9-
108
// eslint-disable-next-line
11-
export async function handler(event: any, context: Context): Promise<void> {
9+
async function handlerFn(event: any, context: Context): Promise<void> {
1210
setContext(context, 'lambda.ts');
1311
logger.logEventIfEnabled(event);
1412

@@ -21,3 +19,7 @@ export async function handler(event: any, context: Context): Promise<void> {
2119
logger.debug('Ignoring error', { error: e });
2220
}
2321
}
22+
23+
// Export wrapped handler for middy v7
24+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
25+
export const handler = middy(handlerFn).use(captureLambdaHandler(tracer) as any);

lambdas/functions/termination-watcher/src/lambda.ts

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import { Config } from './ConfigResolver';
1010

1111
const config = new Config();
1212

13-
export async function interruptionWarning(
13+
async function interruptionWarningFn(
1414
event: SpotInterruptionWarning<SpotTerminationDetail>,
1515
context: Context,
1616
): Promise<void> {
@@ -25,7 +25,7 @@ export async function interruptionWarning(
2525
}
2626
}
2727

28-
export async function termination(event: BidEvictedEvent<BidEvictedDetail>, context: Context): Promise<void> {
28+
async function terminationFn(event: BidEvictedEvent<BidEvictedDetail>, context: Context): Promise<void> {
2929
setContext(context, 'lambda.ts');
3030
logger.logEventIfEnabled(event);
3131
logger.debug('Configuration of the lambda', { config });
@@ -37,20 +37,20 @@ export async function termination(event: BidEvictedEvent<BidEvictedDetail>, cont
3737
}
3838
}
3939

40-
const addMiddleware = () => {
41-
const middleware = middy(interruptionWarning);
40+
// Export wrapped handlers for middy v7
41+
const c = captureLambdaHandler(tracer);
42+
const l = logMetrics(metrics);
4243

43-
const c = captureLambdaHandler(tracer);
44-
if (c) {
45-
logger.debug('Adding captureLambdaHandler middleware');
46-
middleware.use(c);
47-
}
48-
49-
const l = logMetrics(metrics);
50-
if (l) {
51-
logger.debug('Adding logMetrics middleware');
52-
middleware.use(l);
53-
}
54-
};
44+
export const interruptionWarning = middy(interruptionWarningFn);
45+
if (c) {
46+
logger.debug('Adding captureLambdaHandler middleware');
47+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
48+
interruptionWarning.use(c as any);
49+
}
50+
if (l) {
51+
logger.debug('Adding logMetrics middleware');
52+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
53+
interruptionWarning.use(l as any);
54+
}
5555

56-
addMiddleware();
56+
export const termination = terminationFn;

lambdas/functions/webhook/src/ConfigLoader.test.ts

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ describe('ConfigLoader Tests', () => {
165165
});
166166

167167
await expect(ConfigWebhook.load()).rejects.toThrow(
168-
'Failed to load config: Failed to load parameter for matcherConfig from path /path/to/matcher/config: Failed to load matcher config', // eslint-disable-line max-len
168+
'Failed to load config: Failed to load parameter for matcherConfig from path /path/to/matcher/config: Failed to load matcher config',
169169
);
170170
});
171171

@@ -213,7 +213,7 @@ describe('ConfigLoader Tests', () => {
213213
});
214214

215215
await expect(ConfigWebhook.load()).rejects.toThrow(
216-
"Failed to load config: Failed to parse combined matcher config: Expected ',' or ']' after array element in JSON at position 196", // eslint-disable-line max-len
216+
"Failed to load config: Failed to parse combined matcher config: Expected ',' or ']' after array element in JSON at position 196",
217217
);
218218
});
219219
});
@@ -244,7 +244,7 @@ describe('ConfigLoader Tests', () => {
244244
});
245245

246246
await expect(ConfigWebhookEventBridge.load()).rejects.toThrow(
247-
'Failed to load config: Environment variable for eventBusName is not set and no default value provided., Failed to load parameter for webhookSecret from path undefined: Parameter undefined not found', // eslint-disable-line max-len
247+
'Failed to load config: Environment variable for eventBusName is not set and no default value provided., Failed to load parameter for webhookSecret from path undefined: Parameter undefined not found',
248248
);
249249
});
250250
});
@@ -309,7 +309,7 @@ describe('ConfigLoader Tests', () => {
309309
});
310310

311311
await expect(ConfigDispatcher.load()).rejects.toThrow(
312-
'Failed to load config: Failed to load parameter for matcherConfig from path undefined: Parameter undefined not found', // eslint-disable-line max-len
312+
'Failed to load config: Failed to load parameter for matcherConfig from path undefined: Parameter undefined not found',
313313
);
314314
});
315315

lambdas/functions/webhook/src/ConfigLoader.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -61,7 +61,7 @@ abstract class BaseConfig {
6161
this.loadProperty(propertyName, value);
6262
})
6363
.catch((error) => {
64-
const errorMessage = `Failed to load parameter for ${String(propertyName)} from path ${paramPath}: ${(error as Error).message}`; // eslint-disable-line max-len
64+
const errorMessage = `Failed to load parameter for ${String(propertyName)} from path ${paramPath}: ${(error as Error).message}`;
6565
this.configLoadingErrors.push(errorMessage);
6666
});
6767
}

lambdas/functions/webhook/src/lambda.ts

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,7 @@ export interface Response {
1515
body: string;
1616
}
1717

18-
middy(directWebhook).use(captureLambdaHandler(tracer));
19-
20-
export async function directWebhook(event: APIGatewayEvent, context: Context): Promise<Response> {
18+
async function directWebhookHandler(event: APIGatewayEvent, context: Context): Promise<Response> {
2119
setContext(context, 'lambda.ts');
2220
logger.logEventIfEnabled(event);
2321

@@ -93,3 +91,7 @@ function headersToLowerCase(headers: IncomingHttpHeaders): IncomingHttpHeaders {
9391
}
9492
return headers;
9593
}
94+
95+
// Export wrapped handlers for middy v7
96+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
97+
export const directWebhook = middy(directWebhookHandler).use(captureLambdaHandler(tracer) as any);

0 commit comments

Comments
 (0)