Skip to content
This repository was archived by the owner on Jan 16, 2025. It is now read-only.

Commit b8898ef

Browse files
perf(webhook): Use @aws-sdk/client-sqs in the webhook Lambda (#2924)
* Use a regular boolean * Add "@aws-sdk/client-sqs" and remove "aws-sdk" * Format --------- Co-authored-by: Niek Palm <[email protected]>
1 parent e8cae3a commit b8898ef

File tree

4 files changed

+670
-21
lines changed

4 files changed

+670
-21
lines changed

Diff for: modules/webhook/lambdas/webhook/package.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -39,11 +39,11 @@
3939
"typescript": "^4.9.4"
4040
},
4141
"dependencies": {
42+
"@aws-sdk/client-sqs": "^3.264.0",
4243
"@aws-sdk/client-ssm": "^3.245.0",
4344
"@octokit/rest": "^19.0.5",
4445
"@octokit/webhooks": "^10.7.0",
4546
"aws-lambda": "^1.0.7",
46-
"aws-sdk": "^2.1292.0",
4747
"tslog": "^3.3.4"
4848
}
4949
}

Diff for: modules/webhook/lambdas/webhook/src/sqs/index.test.ts

+6-10
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,16 @@
1-
import { SQS } from 'aws-sdk';
1+
import { SendMessageCommandInput } from '@aws-sdk/client-sqs';
22

33
import { ActionRequestMessage, GithubWorkflowEvent, sendActionRequest, sendWebhookEventToWorkflowJobQueue } from '.';
44
import workflowjob_event from '../../test/resources/github_workflowjob_event.json';
55

66
const mockSQS = {
77
sendMessage: jest.fn(() => {
88
{
9-
return { promise: jest.fn() };
9+
return {};
1010
}
1111
}),
1212
};
13-
jest.mock('aws-sdk', () => ({
13+
jest.mock('@aws-sdk/client-sqs', () => ({
1414
SQS: jest.fn().mockImplementation(() => mockSQS),
1515
}));
1616

@@ -26,10 +26,6 @@ describe('Test sending message to SQS.', () => {
2626
queueFifo: false,
2727
};
2828

29-
const sqsMessage: SQS.Types.SendMessageRequest = {
30-
QueueUrl: queueUrl,
31-
MessageBody: JSON.stringify(message),
32-
};
3329
afterEach(() => {
3430
jest.clearAllMocks();
3531
});
@@ -40,7 +36,7 @@ describe('Test sending message to SQS.', () => {
4036
...message,
4137
queueFifo: false,
4238
};
43-
const sqsMessage: SQS.Types.SendMessageRequest = {
39+
const sqsMessage: SendMessageCommandInput = {
4440
QueueUrl: queueUrl,
4541
MessageBody: JSON.stringify(no_fifo_message),
4642
};
@@ -58,7 +54,7 @@ describe('Test sending message to SQS.', () => {
5854
...message,
5955
queueFifo: true,
6056
};
61-
const sqsMessage: SQS.Types.SendMessageRequest = {
57+
const sqsMessage: SendMessageCommandInput = {
6258
QueueUrl: queueUrl,
6359
MessageBody: JSON.stringify(fifo_message),
6460
};
@@ -74,7 +70,7 @@ describe('Test sending message to SQS.', () => {
7470
const message: GithubWorkflowEvent = {
7571
workflowJobEvent: JSON.parse(JSON.stringify(workflowjob_event)),
7672
};
77-
const sqsMessage: SQS.Types.SendMessageRequest = {
73+
const sqsMessage: SendMessageCommandInput = {
7874
QueueUrl: 'https://sqs.eu-west-1.amazonaws.com/123456789/webhook_events_workflow_job_queue',
7975
MessageBody: JSON.stringify(message),
8076
};

Diff for: modules/webhook/lambdas/webhook/src/sqs/index.ts

+8-9
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1+
import { SQS, SendMessageCommandInput } from '@aws-sdk/client-sqs';
12
import { WorkflowJobEvent } from '@octokit/webhooks-types';
2-
import { SQS } from 'aws-sdk';
3-
import { bool } from 'aws-sdk/clients/signer';
43

54
import { LogFields, logger } from '../webhook/logger';
65

@@ -11,19 +10,19 @@ export interface ActionRequestMessage {
1110
repositoryOwner: string;
1211
installationId: number;
1312
queueId: string;
14-
queueFifo: bool;
13+
queueFifo: boolean;
1514
}
1615

1716
export interface MatcherConfig {
1817
labelMatchers: string[][];
19-
exactMatch: bool;
18+
exactMatch: boolean;
2019
}
2120

2221
export interface QueueConfig {
2322
matcherConfig: MatcherConfig;
2423
id: string;
2524
arn: string;
26-
fifo: bool;
25+
fifo: boolean;
2726
}
2827
export interface GithubWorkflowEvent {
2928
workflowJobEvent: WorkflowJobEvent;
@@ -32,7 +31,7 @@ export interface GithubWorkflowEvent {
3231
export const sendActionRequest = async (message: ActionRequestMessage): Promise<void> => {
3332
const sqs = new SQS({ region: process.env.AWS_REGION });
3433

35-
const sqsMessage: SQS.Types.SendMessageRequest = {
34+
const sqsMessage: SendMessageCommandInput = {
3635
QueueUrl: message.queueId,
3736
MessageBody: JSON.stringify(message),
3837
};
@@ -42,15 +41,15 @@ export const sendActionRequest = async (message: ActionRequestMessage): Promise<
4241
sqsMessage.MessageGroupId = String(message.id);
4342
}
4443

45-
await sqs.sendMessage(sqsMessage).promise();
44+
await sqs.sendMessage(sqsMessage);
4645
};
4746

4847
export const sendWebhookEventToWorkflowJobQueue = async (message: GithubWorkflowEvent): Promise<void> => {
4948
const webhook_events_workflow_job_queue = process.env.SQS_WORKFLOW_JOB_QUEUE || undefined;
5049

5150
if (webhook_events_workflow_job_queue != undefined) {
5251
const sqs = new SQS({ region: process.env.AWS_REGION });
53-
const sqsMessage: SQS.Types.SendMessageRequest = {
52+
const sqsMessage: SendMessageCommandInput = {
5453
QueueUrl: String(process.env.SQS_WORKFLOW_JOB_QUEUE),
5554
MessageBody: JSON.stringify(message),
5655
};
@@ -59,7 +58,7 @@ export const sendWebhookEventToWorkflowJobQueue = async (message: GithubWorkflow
5958
LogFields.print(),
6059
);
6160
try {
62-
await sqs.sendMessage(sqsMessage).promise();
61+
await sqs.sendMessage(sqsMessage);
6362
} catch (e) {
6463
logger.warn(`Error in sending webhook events to workflow job queue: ${(e as Error).message}`, LogFields.print());
6564
}

0 commit comments

Comments
 (0)