Skip to content

Commit 92e5bc6

Browse files
authored
CCM-12221: get routing config endpoint (#690)
1 parent 0c64e15 commit 92e5bc6

File tree

57 files changed

+2229
-384
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

57 files changed

+2229
-384
lines changed

infrastructure/terraform/components/sandbox/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
| <a name="output_internal_bucket_name"></a> [internal\_bucket\_name](#output\_internal\_bucket\_name) | n/a |
4444
| <a name="output_quarantine_bucket_name"></a> [quarantine\_bucket\_name](#output\_quarantine\_bucket\_name) | n/a |
4545
| <a name="output_request_proof_queue_url"></a> [request\_proof\_queue\_url](#output\_request\_proof\_queue\_url) | n/a |
46+
| <a name="output_routing_config_table_name"></a> [routing\_config\_table\_name](#output\_routing\_config\_table\_name) | n/a |
4647
| <a name="output_sftp_environment"></a> [sftp\_environment](#output\_sftp\_environment) | n/a |
4748
| <a name="output_sftp_mock_credential_path"></a> [sftp\_mock\_credential\_path](#output\_sftp\_mock\_credential\_path) | n/a |
4849
| <a name="output_sftp_poll_lambda_name"></a> [sftp\_poll\_lambda\_name](#output\_sftp\_poll\_lambda\_name) | n/a |

infrastructure/terraform/components/sandbox/outputs.tf

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,3 +69,7 @@ output "test_email_bucket_prefix" {
6969
output "event_cache_bucket_name" {
7070
value = module.eventpub.s3_bucket_event_cache.bucket
7171
}
72+
73+
output "routing_config_table_name" {
74+
value = module.backend_api.routing_config_table_name
75+
}

infrastructure/terraform/modules/backend-api/README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@ No requirements.
4141
| <a name="module_create_template_lambda"></a> [create\_template\_lambda](#module\_create\_template\_lambda) | https://github.com/NHSDigital/nhs-notify-shared-modules/releases/download/v2.0.22/terraform-lambda.zip | n/a |
4242
| <a name="module_delete_template_lambda"></a> [delete\_template\_lambda](#module\_delete\_template\_lambda) | https://github.com/NHSDigital/nhs-notify-shared-modules/releases/download/v2.0.22/terraform-lambda.zip | n/a |
4343
| <a name="module_get_client_lambda"></a> [get\_client\_lambda](#module\_get\_client\_lambda) | https://github.com/NHSDigital/nhs-notify-shared-modules/releases/download/v2.0.22/terraform-lambda.zip | n/a |
44+
| <a name="module_get_routing_config_lambda"></a> [get\_routing\_config\_lambda](#module\_get\_routing\_config\_lambda) | https://github.com/NHSDigital/nhs-notify-shared-modules/releases/download/v2.0.22/terraform-lambda.zip | n/a |
4445
| <a name="module_get_template_lambda"></a> [get\_template\_lambda](#module\_get\_template\_lambda) | https://github.com/NHSDigital/nhs-notify-shared-modules/releases/download/v2.0.22/terraform-lambda.zip | n/a |
4546
| <a name="module_lambda_copy_scanned_object_to_internal"></a> [lambda\_copy\_scanned\_object\_to\_internal](#module\_lambda\_copy\_scanned\_object\_to\_internal) | https://github.com/NHSDigital/nhs-notify-shared-modules/releases/download/v2.0.22/terraform-lambda.zip | n/a |
4647
| <a name="module_lambda_delete_failed_scanned_object"></a> [lambda\_delete\_failed\_scanned\_object](#module\_lambda\_delete\_failed\_scanned\_object) | https://github.com/NHSDigital/nhs-notify-shared-modules/releases/download/v2.0.22/terraform-lambda.zip | n/a |
@@ -73,6 +74,7 @@ No requirements.
7374
| <a name="output_internal_bucket_name"></a> [internal\_bucket\_name](#output\_internal\_bucket\_name) | n/a |
7475
| <a name="output_quarantine_bucket_name"></a> [quarantine\_bucket\_name](#output\_quarantine\_bucket\_name) | n/a |
7576
| <a name="output_request_proof_queue_url"></a> [request\_proof\_queue\_url](#output\_request\_proof\_queue\_url) | n/a |
77+
| <a name="output_routing_config_table_name"></a> [routing\_config\_table\_name](#output\_routing\_config\_table\_name) | n/a |
7678
| <a name="output_sftp_environment"></a> [sftp\_environment](#output\_sftp\_environment) | n/a |
7779
| <a name="output_sftp_mock_credential_path"></a> [sftp\_mock\_credential\_path](#output\_sftp\_mock\_credential\_path) | n/a |
7880
| <a name="output_sftp_poll_lambda_name"></a> [sftp\_poll\_lambda\_name](#output\_sftp\_poll\_lambda\_name) | n/a |

infrastructure/terraform/modules/backend-api/iam_role_api_gateway_execution_role.tf

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ data "aws_iam_policy_document" "api_gateway_execution_policy" {
5454
module.delete_template_lambda.function_arn,
5555
module.get_client_lambda.function_arn,
5656
module.get_template_lambda.function_arn,
57+
module.get_routing_config_lambda.function_arn,
5758
module.list_template_lambda.function_arn,
5859
module.request_proof_lambda.function_arn,
5960
module.submit_template_lambda.function_arn,

infrastructure/terraform/modules/backend-api/locals.tf

Lines changed: 14 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,19 @@ locals {
1111
client_ssm_path_pattern = "arn:aws:ssm:${var.region}:${var.aws_account_id}:parameter${local.client_ssm_path_prefix}/*"
1212

1313
openapi_spec = templatefile("${path.module}/spec.tmpl.json", {
14-
APIG_EXECUTION_ROLE_ARN = aws_iam_role.api_gateway_execution_role.arn
15-
AUTHORIZER_LAMBDA_ARN = module.authorizer_lambda.function_arn
16-
AWS_REGION = var.region
17-
CREATE_LAMBDA_ARN = module.create_template_lambda.function_arn
18-
DELETE_LAMBDA_ARN = module.delete_template_lambda.function_arn
19-
GET_CLIENT_LAMBDA_ARN = module.get_client_lambda.function_arn
20-
GET_LAMBDA_ARN = module.get_template_lambda.function_arn
21-
LIST_LAMBDA_ARN = module.list_template_lambda.function_arn
22-
REQUEST_PROOF_LAMBDA_ARN = module.request_proof_lambda.function_arn
23-
SUBMIT_LAMBDA_ARN = module.submit_template_lambda.function_arn
24-
UPDATE_LAMBDA_ARN = module.update_template_lambda.function_arn
25-
UPLOAD_LETTER_LAMBDA_ARN = module.upload_letter_template_lambda.function_arn
14+
APIG_EXECUTION_ROLE_ARN = aws_iam_role.api_gateway_execution_role.arn
15+
AUTHORIZER_LAMBDA_ARN = module.authorizer_lambda.function_arn
16+
AWS_REGION = var.region
17+
CREATE_LAMBDA_ARN = module.create_template_lambda.function_arn
18+
DELETE_LAMBDA_ARN = module.delete_template_lambda.function_arn
19+
GET_CLIENT_LAMBDA_ARN = module.get_client_lambda.function_arn
20+
GET_LAMBDA_ARN = module.get_template_lambda.function_arn
21+
GET_ROUTING_CONFIG_LAMBDA_ARN = module.get_routing_config_lambda.function_arn
22+
LIST_LAMBDA_ARN = module.list_template_lambda.function_arn
23+
REQUEST_PROOF_LAMBDA_ARN = module.request_proof_lambda.function_arn
24+
SUBMIT_LAMBDA_ARN = module.submit_template_lambda.function_arn
25+
UPDATE_LAMBDA_ARN = module.update_template_lambda.function_arn
26+
UPLOAD_LETTER_LAMBDA_ARN = module.upload_letter_template_lambda.function_arn
2627
})
2728

2829
backend_lambda_environment_variables = {
@@ -32,6 +33,7 @@ locals {
3233
ENVIRONMENT = var.environment
3334
NODE_OPTIONS = "--enable-source-maps"
3435
REQUEST_PROOF_QUEUE_URL = module.sqs_sftp_upload.sqs_queue_url
36+
ROUTING_CONFIG_TABLE_NAME = aws_dynamodb_table.routing_configuration.name
3537
SUPPLIER_RECIPIENT_EMAIL_ADDRESSES = jsonencode({ for k, v in var.letter_suppliers : k => v.email_addresses })
3638
TEMPLATE_SUBMITTED_SENDER_EMAIL_ADDRESS = var.template_submitted_sender_email_address
3739
TEMPLATES_DOWNLOAD_BUCKET_NAME = module.s3bucket_download.id
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
module "get_routing_config_lambda" {
2+
source = "https://github.com/NHSDigital/nhs-notify-shared-modules/releases/download/v2.0.22/terraform-lambda.zip"
3+
4+
project = var.project
5+
environment = var.environment
6+
component = var.component
7+
aws_account_id = var.aws_account_id
8+
region = var.region
9+
10+
kms_key_arn = var.kms_key_arn
11+
12+
function_name = "get-routing-config"
13+
14+
function_module_name = "get-routing-config"
15+
handler_function_name = "handler"
16+
description = "Get Routing Config API endpoint"
17+
18+
memory = 512
19+
timeout = 3
20+
runtime = "nodejs20.x"
21+
22+
log_retention_in_days = var.log_retention_in_days
23+
24+
iam_policy_document = {
25+
body = data.aws_iam_policy_document.get_routing_config_lambda_policy.json
26+
}
27+
28+
lambda_env_vars = local.backend_lambda_environment_variables
29+
function_s3_bucket = var.function_s3_bucket
30+
function_code_base_path = local.lambdas_dir
31+
function_code_dir = "backend-api/dist/get-routing-config"
32+
33+
send_to_firehose = var.send_to_firehose
34+
log_destination_arn = var.log_destination_arn
35+
log_subscription_role_arn = var.log_subscription_role_arn
36+
}
37+
38+
data "aws_iam_policy_document" "get_routing_config_lambda_policy" {
39+
statement {
40+
sid = "AllowDynamoAccess"
41+
effect = "Allow"
42+
43+
actions = [
44+
"dynamodb:GetItem",
45+
]
46+
47+
resources = [
48+
aws_dynamodb_table.routing_configuration.arn,
49+
]
50+
}
51+
52+
statement {
53+
sid = "AllowKMSAccess"
54+
effect = "Allow"
55+
56+
actions = [
57+
"kms:Decrypt",
58+
"kms:DescribeKey",
59+
"kms:Encrypt",
60+
"kms:GenerateDataKey*",
61+
"kms:ReEncrypt*",
62+
]
63+
64+
resources = [
65+
var.kms_key_arn
66+
]
67+
}
68+
}

infrastructure/terraform/modules/backend-api/outputs.tf

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,3 +41,7 @@ output "templates_table_name" {
4141
output "quarantine_bucket_name" {
4242
value = module.s3bucket_quarantine.id
4343
}
44+
45+
output "routing_config_table_name" {
46+
value = aws_dynamodb_table.routing_configuration.name
47+
}

0 commit comments

Comments
 (0)