Skip to content

Commit 07623cd

Browse files
PRMP-583 Document review SQS and lambda (#464)
Co-authored-by: DuncanSangsterNHS <[email protected]>
1 parent 98ed4de commit 07623cd

File tree

2 files changed

+89
-0
lines changed

2 files changed

+89
-0
lines changed
Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
module "document_review_processor_lambda" {
2+
source = "./modules/lambda"
3+
name = "DocumentReviewProcessor"
4+
handler = "handlers.document_review_processor.lambda_handler"
5+
iam_role_policy_documents = [
6+
module.document_review_queue.sqs_read_policy_document,
7+
module.document_review_queue.sqs_write_policy_document,
8+
]
9+
kms_deletion_window = var.kms_deletion_window
10+
is_gateway_integration_needed = false
11+
is_invoked_from_gateway = false
12+
rest_api_id = null
13+
api_execution_arn = null
14+
lambda_timeout = 900
15+
lambda_environment_variables = {
16+
DOCUMENT_REVIEW_BUCKET_NAME = "${terraform.workspace}-placeholder-document-review-bucket"
17+
DOCUMENT_REVIEW_TABLE_NAME = "${terraform.workspace}_placeholder_document_review_table"
18+
WORKSPACE = terraform.workspace
19+
}
20+
depends_on = []
21+
}
22+
23+
24+
resource "aws_lambda_event_source_mapping" "document-review-processor" {
25+
event_source_arn = module.document_review_queue.endpoint
26+
function_name = module.document_review_processor_lambda.lambda_arn
27+
}

infrastructure/sqs-review.tf

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
module "document_review_queue" {
2+
source = "./modules/sqs"
3+
name = "document-review"
4+
max_size_message = 256 * 1024
5+
message_retention = 60 * 60 * 24 * 14 # 14 days
6+
dlq_message_retention = 60 * 60 * 24 * 14 # 14 days
7+
environment = var.environment
8+
owner = var.owner
9+
max_visibility = 1020
10+
enable_dlq = true
11+
delay = 0
12+
enable_sse = true
13+
14+
}
15+
16+
resource "aws_cloudwatch_metric_alarm" "review_dlq_new_messages" {
17+
alarm_name = "${terraform.workspace}_review_dlq_messages"
18+
comparison_operator = "GreaterThanThreshold"
19+
evaluation_periods = 1
20+
metric_name = "ApproximateNumberOfMessagesVisible"
21+
namespace = "AWS/SQS"
22+
period = 60
23+
statistic = "Sum"
24+
threshold = 0
25+
alarm_description = "Alarm when there are new messages in the document review dlq"
26+
alarm_actions = [module.document_review_dlq_alarm_topic.arn]
27+
28+
dimensions = {
29+
QueueName = module.document_review_queue.dlq_name
30+
}
31+
}
32+
33+
module "document_review_dlq_alarm_topic" {
34+
source = "./modules/sns"
35+
sns_encryption_key_id = module.sns_encryption_key.id
36+
topic_name = "document_review_dlq_topic"
37+
topic_protocol = "email"
38+
is_topic_endpoint_list = true
39+
topic_endpoint_list = nonsensitive(split(",", data.aws_ssm_parameter.cloud_security_notification_email_list.value))
40+
delivery_policy = jsonencode({
41+
"Version" : "2012-10-17",
42+
"Statement" : [
43+
{
44+
"Effect" : "Allow",
45+
"Principal" : {
46+
"Service" : "cloudwatch.amazonaws.com"
47+
},
48+
"Action" : [
49+
"SNS:Publish"
50+
],
51+
"Condition" : {
52+
"ArnLike" : {
53+
"aws:SourceArn" : "arn:aws:cloudwatch:eu-west-2:${data.aws_caller_identity.current.account_id}:alarm:*"
54+
}
55+
},
56+
"Resource" : "*"
57+
}
58+
]
59+
})
60+
61+
depends_on = [module.document_review_queue]
62+
}

0 commit comments

Comments
 (0)