Skip to content

Commit 4e1aeff

Browse files
committed
fix consumer
Signed-off-by: Dev Singh <[email protected]>
1 parent f2a7899 commit 4e1aeff

File tree

3 files changed

+32
-2
lines changed

3 files changed

+32
-2
lines changed

cloudformation/main.yml

Lines changed: 27 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,14 @@ Parameters:
2222
Default: false
2323
Type: String
2424
AllowedValues: [true, false]
25+
SqsLambdaTimeout:
26+
Description: How long the SQS lambda is permitted to run (in seconds)
27+
Default: 300
28+
Type: Number
29+
SqsMessageTimeout:
30+
Description: MessageVisibilityTimeout for the SQS Lambda queue (should be at least 6xSqsLambdaTimeout)
31+
Default: 1800
32+
Type: Number
2533

2634
Conditions:
2735
IsProd: !Equals [!Ref RunEnvironment, 'prod']
@@ -89,7 +97,7 @@ Resources:
8997
Location: ./sqs.yml
9098
Parameters:
9199
QueueName: !Sub ${ApplicationPrefix}-sqs
92-
100+
MessageTimeout: !Ref SqsMessageTimeout
93101

94102
IcalDomainProxy:
95103
Type: AWS::Serverless::Application
@@ -171,7 +179,7 @@ Resources:
171179
Handler: index.handler
172180
MemorySize: 512
173181
Role: !GetAtt AppSecurityRoles.Outputs.MainFunctionRoleArn
174-
Timeout: 900
182+
Timeout: !Ref SqsLambdaTimeout
175183
LoggingConfig:
176184
LogGroup: !Sub /aws/lambda/${ApplicationPrefix}-lambda
177185
Environment:
@@ -390,6 +398,23 @@ Resources:
390398
- Name: 'ApiName'
391399
Value: !Sub ${ApplicationPrefix}-gateway
392400

401+
402+
AppDLQMessagesAlarm:
403+
Type: 'AWS::CloudWatch::Alarm'
404+
Condition: IsProd
405+
Properties:
406+
AlarmName: !Sub ${ApplicationPrefix}-sqs-dlq
407+
AlarmDescription: 'Items are present in the application DLQ, meaning some messages failed to process.'
408+
Namespace: 'AWS/SQS'
409+
MetricName: 'ApproximateNumberOfMessagesVisible'
410+
Statistic: 'SUM'
411+
Period: '60'
412+
EvaluationPeriods: '1'
413+
ComparisonOperator: 'GreaterThanThreshold'
414+
Threshold: '0'
415+
AlarmActions:
416+
- !Ref AlertSNSArn
417+
393418
APILambdaPermission:
394419
Type: AWS::Lambda::Permission
395420
Properties:

cloudformation/sqs.yml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,15 +5,19 @@ Parameters:
55
QueueName:
66
Type: String
77
AllowedPattern: ^[a-zA-Z0-9]+[a-zA-Z0-9-]+[a-zA-Z0-9]+$
8+
MessageTimeout:
9+
Type: Number
810
Resources:
911
AppDLQ:
1012
Type: AWS::SQS::Queue
1113
Properties:
1214
QueueName: !Sub ${QueueName}-dlq
15+
VisibilityTimeout: !Ref MessageTimeout
1316
AppQueue:
1417
Type: AWS::SQS::Queue
1518
Properties:
1619
QueueName: !Ref QueueName
20+
VisibilityTimeout: !Ref MessageTimeout
1721
RedrivePolicy:
1822
deadLetterTargetArn:
1923
Fn::GetAtt:

src/api/sqs/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ export const handler = middy()
5454
return func(parsedBody.payload, parsedBody.metadata, childLogger);
5555
} catch (e: any) {
5656
logger.error({ sqsMessageId: record.messageId }, e.toString());
57+
throw e;
5758
}
5859
});
5960
return Promise.allSettled(recordsPromises);

0 commit comments

Comments
 (0)