Skip to content

Commit 443e058

Browse files
committed
Merge branch 'main' of https://github.com/NHSDigital/nhs-notify-web-template-management into feature/CCM-10429_templates_and_s3_files_migration
2 parents 7db16aa + 10a71b6 commit 443e058

38 files changed

+2311
-452
lines changed

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,8 @@ No requirements.
3838
| Name | Source | Version |
3939
|------|--------|---------|
4040
| <a name="module_authorizer_lambda"></a> [authorizer\_lambda](#module\_authorizer\_lambda) | https://github.com/NHSDigital/nhs-notify-shared-modules/releases/download/v2.0.22/terraform-lambda.zip | n/a |
41+
| <a name="module_count_routing_configs_lambda"></a> [count\_routing\_configs\_lambda](#module\_count\_routing\_configs\_lambda) | https://github.com/NHSDigital/nhs-notify-shared-modules/releases/download/v2.0.22/terraform-lambda.zip | n/a |
42+
| <a name="module_create_routing_config_lambda"></a> [create\_routing\_config\_lambda](#module\_create\_routing\_config\_lambda) | https://github.com/NHSDigital/nhs-notify-shared-modules/releases/download/v2.0.22/terraform-lambda.zip | n/a |
4143
| <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 |
4244
| <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 |
4345
| <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 |

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

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,9 @@ data "aws_iam_policy_document" "api_gateway_execution_policy" {
5050
resources = [
5151
module.authorizer_lambda.function_arn,
5252
module.upload_letter_template_lambda.function_arn,
53+
module.count_routing_configs_lambda.function_arn,
5354
module.create_template_lambda.function_arn,
55+
module.create_routing_config_lambda.function_arn,
5456
module.delete_template_lambda.function_arn,
5557
module.get_client_lambda.function_arn,
5658
module.get_routing_config_lambda.function_arn,

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

Lines changed: 16 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -11,20 +11,22 @@ 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-
GET_ROUTING_CONFIG_LAMBDA_ARN = module.get_routing_config_lambda.function_arn
22-
LIST_LAMBDA_ARN = module.list_template_lambda.function_arn
23-
LIST_ROUTING_CONFIGS_LAMBDA_ARN = module.list_routing_configs_lambda.function_arn
24-
REQUEST_PROOF_LAMBDA_ARN = module.request_proof_lambda.function_arn
25-
SUBMIT_LAMBDA_ARN = module.submit_template_lambda.function_arn
26-
UPDATE_LAMBDA_ARN = module.update_template_lambda.function_arn
27-
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+
COUNT_ROUTING_CONFIGS_LAMBDA_ARN = module.count_routing_configs_lambda.function_arn
18+
CREATE_LAMBDA_ARN = module.create_template_lambda.function_arn
19+
CREATE_ROUTING_CONFIG_LAMBDA_ARN = module.create_routing_config_lambda.function_arn
20+
DELETE_LAMBDA_ARN = module.delete_template_lambda.function_arn
21+
GET_CLIENT_LAMBDA_ARN = module.get_client_lambda.function_arn
22+
GET_LAMBDA_ARN = module.get_template_lambda.function_arn
23+
GET_ROUTING_CONFIG_LAMBDA_ARN = module.get_routing_config_lambda.function_arn
24+
LIST_LAMBDA_ARN = module.list_template_lambda.function_arn
25+
LIST_ROUTING_CONFIGS_LAMBDA_ARN = module.list_routing_configs_lambda.function_arn
26+
REQUEST_PROOF_LAMBDA_ARN = module.request_proof_lambda.function_arn
27+
SUBMIT_LAMBDA_ARN = module.submit_template_lambda.function_arn
28+
UPDATE_LAMBDA_ARN = module.update_template_lambda.function_arn
29+
UPLOAD_LETTER_LAMBDA_ARN = module.upload_letter_template_lambda.function_arn
2830
})
2931

3032
backend_lambda_environment_variables = {
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
module "count_routing_configs_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 = "count-routing-configs"
13+
14+
function_module_name = "count-routing-configs"
15+
handler_function_name = "handler"
16+
description = "Count Routing Configs 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.count_routing_configs_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/count-routing-configs"
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" "count_routing_configs_lambda_policy" {
39+
statement {
40+
sid = "AllowDynamoAccess"
41+
effect = "Allow"
42+
43+
actions = [
44+
"dynamodb:Query",
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+
}
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
module "create_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 = "create-routing-config"
13+
14+
function_module_name = "create-routing-config"
15+
handler_function_name = "handler"
16+
description = "Create 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.create_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/create-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" "create_routing_config_lambda_policy" {
39+
statement {
40+
sid = "AllowDynamoAccess"
41+
effect = "Allow"
42+
43+
actions = [
44+
"dynamodb:PutItem",
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+
}

0 commit comments

Comments
 (0)