Skip to content

Commit e396a9d

Browse files
committed
CCM-12999 Letter amendments queue
1 parent 1eecf9b commit e396a9d

32 files changed

Lines changed: 517 additions & 27 deletions

infrastructure/terraform/components/api/README.md

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ No requirements.
3737

3838
| Name | Source | Version |
3939
|------|--------|---------|
40+
| <a name="module_allocation_lambda"></a> [allocation\_lambda](#module\_allocation\_lambda) | https://github.com/NHSDigital/nhs-notify-shared-modules/releases/download/v2.0.26/terraform-lambda.zip | n/a |
4041
| <a name="module_authorizer_lambda"></a> [authorizer\_lambda](#module\_authorizer\_lambda) | https://github.com/NHSDigital/nhs-notify-shared-modules/releases/download/v2.0.26/terraform-lambda.zip | n/a |
4142
| <a name="module_domain_truststore"></a> [domain\_truststore](#module\_domain\_truststore) | https://github.com/NHSDigital/nhs-notify-shared-modules/releases/download/v2.0.26/terraform-s3bucket.zip | n/a |
4243
| <a name="module_eventpub"></a> [eventpub](#module\_eventpub) | https://github.com/NHSDigital/nhs-notify-shared-modules/releases/download/v2.0.26/terraform-eventpub.zip | n/a |
@@ -47,14 +48,14 @@ No requirements.
4748
| <a name="module_get_status"></a> [get\_status](#module\_get\_status) | https://github.com/NHSDigital/nhs-notify-shared-modules/releases/download/v2.0.24/terraform-lambda.zip | n/a |
4849
| <a name="module_kms"></a> [kms](#module\_kms) | https://github.com/NHSDigital/nhs-notify-shared-modules/releases/download/v2.0.26/terraform-kms.zip | n/a |
4950
| <a name="module_letter_status_update"></a> [letter\_status\_update](#module\_letter\_status\_update) | https://github.com/NHSDigital/nhs-notify-shared-modules/releases/download/v2.0.24/terraform-lambda.zip | n/a |
50-
| <a name="module_letter_status_updates_queue"></a> [letter\_status\_updates\_queue](#module\_letter\_status\_updates\_queue) | https://github.com/NHSDigital/nhs-notify-shared-modules/releases/download/v2.0.24/terraform-sqs.zip | n/a |
5151
| <a name="module_letter_updates_transformer"></a> [letter\_updates\_transformer](#module\_letter\_updates\_transformer) | https://github.com/NHSDigital/nhs-notify-shared-modules/releases/download/v2.0.26/terraform-lambda.zip | n/a |
5252
| <a name="module_logging_bucket"></a> [logging\_bucket](#module\_logging\_bucket) | https://github.com/NHSDigital/nhs-notify-shared-modules/releases/download/v2.0.26/terraform-s3bucket.zip | n/a |
5353
| <a name="module_patch_letter"></a> [patch\_letter](#module\_patch\_letter) | https://github.com/NHSDigital/nhs-notify-shared-modules/releases/download/v2.0.26/terraform-lambda.zip | n/a |
5454
| <a name="module_post_letters"></a> [post\_letters](#module\_post\_letters) | https://github.com/NHSDigital/nhs-notify-shared-modules/releases/download/v2.0.24/terraform-lambda.zip | n/a |
5555
| <a name="module_post_mi"></a> [post\_mi](#module\_post\_mi) | https://github.com/NHSDigital/nhs-notify-shared-modules/releases/download/v2.0.26/terraform-lambda.zip | n/a |
5656
| <a name="module_s3bucket_test_letters"></a> [s3bucket\_test\_letters](#module\_s3bucket\_test\_letters) | https://github.com/NHSDigital/nhs-notify-shared-modules/releases/download/v2.0.26/terraform-s3bucket.zip | n/a |
5757
| <a name="module_sqs_letter_updates"></a> [sqs\_letter\_updates](#module\_sqs\_letter\_updates) | https://github.com/NHSDigital/nhs-notify-shared-modules/releases/download/v2.0.26/terraform-sqs.zip | n/a |
58+
| <a name="module_supplier_requests_queue"></a> [supplier\_requests\_queue](#module\_supplier\_requests\_queue) | https://github.com/NHSDigital/nhs-notify-shared-modules/releases/download/v2.0.24/terraform-sqs.zip | n/a |
5859
| <a name="module_supplier_ssl"></a> [supplier\_ssl](#module\_supplier\_ssl) | https://github.com/NHSDigital/nhs-notify-shared-modules/releases/download/v2.0.26/terraform-ssl.zip | n/a |
5960
| <a name="module_upsert_letter"></a> [upsert\_letter](#module\_upsert\_letter) | https://github.com/NHSDigital/nhs-notify-shared-modules/releases/download/v2.0.26/terraform-lambda.zip | n/a |
6061
## Outputs

infrastructure/terraform/components/api/lambda_event_source_mapping_upsert_letter.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
resource "aws_lambda_event_source_mapping" "upsert_letter" {
2-
event_source_arn = module.sqs_letter_updates.sqs_queue_arn
2+
event_source_arn = module.amendments_queue.sqs_queue_arn
33
function_name = module.upsert_letter.function_name
44
batch_size = 10
55
maximum_batching_window_in_seconds = 5
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
module "allocation_lambda" {
2+
source = "https://github.com/NHSDigital/nhs-notify-shared-modules/releases/download/v2.0.26/terraform-lambda.zip"
3+
4+
function_name = "allocate_supplier"
5+
description = "Lambda function for allocating supplier"
6+
7+
aws_account_id = var.aws_account_id
8+
component = var.component
9+
environment = var.environment
10+
project = var.project
11+
region = var.region
12+
group = var.group
13+
14+
log_retention_in_days = var.log_retention_in_days
15+
kms_key_arn = module.kms.key_arn
16+
17+
iam_policy_document = {
18+
body = data.aws_iam_policy_document.allocation_lambda.json
19+
}
20+
21+
function_s3_bucket = local.acct.s3_buckets["lambda_function_artefacts"]["id"]
22+
function_code_base_path = local.aws_lambda_functions_dir_path
23+
function_code_dir = "allocation/dist"
24+
function_include_common = true
25+
handler_function_name = "handler"
26+
runtime = "nodejs22.x"
27+
memory = 128
28+
timeout = 29
29+
log_level = var.log_level
30+
31+
force_lambda_code_deploy = var.force_lambda_code_deploy
32+
enable_lambda_insights = false
33+
34+
send_to_firehose = true
35+
log_destination_arn = local.destination_arn
36+
log_subscription_role_arn = local.acct.log_subscription_role_arn
37+
38+
lambda_env_vars = {
39+
QUEUE_URL = module.sqs_letter_updates.sqs_queue_url
40+
}
41+
42+
data "aws_iam_policy_document" "allocation_lambda" {
43+
statement {
44+
sid = "KMSPermissions"
45+
effect = "Allow"
46+
47+
actions = [
48+
"kms:Decrypt",
49+
"kms:GenerateDataKey",
50+
]
51+
52+
resources = [
53+
module.kms.key_arn,
54+
]
55+
}
56+
}
57+
}

infrastructure/terraform/components/api/module_lambda_letter_status_update.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,7 +80,7 @@ data "aws_iam_policy_document" "letter_status_update" {
8080
]
8181

8282
resources = [
83-
module.letter_status_updates_queue.sqs_queue_arn
83+
module.supplier_requests_queue.sqs_queue_arn
8484
]
8585
}
8686
}

infrastructure/terraform/components/api/module_lambda_patch_letter.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,7 @@ data "aws_iam_policy_document" "patch_letter_lambda" {
6565
]
6666

6767
resources = [
68-
module.letter_status_updates_queue.sqs_queue_arn
68+
module.supplier_requests_queue.sqs_queue_arn
6969
]
7070
}
7171
}

infrastructure/terraform/components/api/module_lambda_post_letters.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ data "aws_iam_policy_document" "post_letters" {
6666
]
6767

6868
resources = [
69-
module.letter_status_updates_queue.sqs_queue_arn
69+
module.supplier_requests_queue.sqs_queue_arn
7070
]
7171
}
7272
}

infrastructure/terraform/components/api/module_lambda_upsert_letter.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -83,7 +83,7 @@ data "aws_iam_policy_document" "upsert_letter_lambda" {
8383
]
8484

8585
resources = [
86-
module.sqs_letter_updates.sqs_queue_arn
86+
module.amendments_queue.sqs_queue_arn
8787
]
8888
}
8989
}

infrastructure/terraform/components/api/module_sqs_letter_updates.tf renamed to infrastructure/terraform/components/api/module_sqs_amendments_queue.tf

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,10 @@ module "sqs_letter_updates" {
66
environment = var.environment
77
project = var.project
88
region = var.region
9-
name = "letter-updates"
9+
name = "${local.csi}-amendments-queue"
10+
11+
fifo_queue = true
12+
content_based_deduplication = true
1013

1114
sqs_kms_key_arn = module.kms.key_arn
1215

infrastructure/terraform/components/api/module_sqs_letter_status_updates.tf renamed to infrastructure/terraform/components/api/module_sqs_supplier_requests_queue.tf

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,18 @@
11
# Queue to transport update letter status messages
2-
module "letter_status_updates_queue" {
2+
module "supplier_requests_queue" {
33
source = "https://github.com/NHSDigital/nhs-notify-shared-modules/releases/download/v2.0.24/terraform-sqs.zip"
44

5-
name = "letter_status_updates_queue"
5+
name = "${local.csi}-supplier-requests-queue"
66

77
aws_account_id = var.aws_account_id
88
component = var.component
99
environment = var.environment
1010
project = var.project
1111
region = var.region
1212

13+
fifo_queue = true
14+
content_based_deduplication = true
15+
1316
sqs_kms_key_arn = module.kms.key_arn
1417

1518
create_dlq = true
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
resource "aws_sns_topic_subscription" "allocation_lambda" {
2+
topic_arn = aws_sns_topic.sns_topic_event_bus.arn
3+
protocol = "lambda"
4+
endpoint = module.allocation_lambda.function_arn
5+
}
6+
7+
resource "aws_lambda_permission" "allocation_lambda_sns" {
8+
statement_id = "AllowExecutionFromSNS"
9+
action = "lambda:InvokeFunction"
10+
function_name = module.allocation_lambda.function_name
11+
principal = "sns.amazonaws.com"
12+
source_arn = aws_sns_topic.sns_topic_event_bus.arn
13+
}

0 commit comments

Comments
 (0)