Skip to content

Commit b11e065

Browse files
authored
Merge branch 'main' into PRM-741
2 parents 6c01f4c + 16c63c3 commit b11e065

8 files changed

Lines changed: 141 additions & 0 deletions

File tree

infrastructure/api.tf

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ resource "aws_api_gateway_deployment" "ndr_api_deploy" {
4444
aws_api_gateway_rest_api.ndr_doc_store_api,
4545
aws_api_gateway_authorizer.repo_authoriser,
4646
aws_api_gateway_resource.document_reference_by_id,
47+
aws_api_gateway_integration.get_document_reference_version,
4748
module.access-audit-gateway,
4849
module.access-audit-lambda,
4950
module.back-channel-logout-gateway,
@@ -59,6 +60,8 @@ resource "aws_api_gateway_deployment" "ndr_api_deploy" {
5960
module.document_reference_gateway,
6061
module.document-status-check-gateway,
6162
module.document-status-check-lambda,
63+
module.document_reference_history_gateway,
64+
module.document_reference_version_gateway,
6265
module.feature-flags-gateway,
6366
module.feature-flags-lambda,
6467
module.fhir_document_reference_gateway,
@@ -78,6 +81,7 @@ resource "aws_api_gateway_deployment" "ndr_api_deploy" {
7881
module.review_document_status_gateway,
7982
module.review-document-status-check-lambda,
8083
module.review_document_version_gateway,
84+
module.search_document_reference_history_lambda,
8185
module.search-document-references-gateway,
8286
module.search-document-references-lambda,
8387
module.search_document_review_lambda,

infrastructure/gateway-document-reference.tf

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,3 +39,36 @@ module "document_reference_id_gateway" {
3939

4040
depends_on = [module.document_reference_gateway]
4141
}
42+
43+
module "document_reference_history_gateway" {
44+
source = "./modules/gateway"
45+
api_gateway_id = aws_api_gateway_rest_api.ndr_doc_store_api.id
46+
parent_id = module.document_reference_id_gateway.gateway_resource_id
47+
http_methods = ["GET"]
48+
authorization = "CUSTOM"
49+
gateway_path = "_history"
50+
authorizer_id = aws_api_gateway_authorizer.repo_authoriser.id
51+
require_credentials = true
52+
origin = local.base_url_with_quotes
53+
54+
depends_on = [module.document_reference_id_gateway]
55+
}
56+
57+
module "document_reference_version_gateway" {
58+
source = "./modules/gateway"
59+
api_gateway_id = aws_api_gateway_rest_api.ndr_doc_store_api.id
60+
parent_id = module.document_reference_history_gateway.gateway_resource_id
61+
http_methods = ["GET"]
62+
authorization = "CUSTOM"
63+
gateway_path = "{version}"
64+
authorizer_id = aws_api_gateway_authorizer.repo_authoriser.id
65+
require_credentials = true
66+
origin = local.base_url_with_quotes
67+
68+
request_parameters = {
69+
"method.request.path.id" = true,
70+
"method.request.path.version" = true
71+
}
72+
73+
depends_on = [module.document_reference_history_gateway]
74+
}

infrastructure/lambda-get-doc-ref.tf

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,3 +72,17 @@ module "get-doc-ref-lambda" {
7272
module.document_reference_id_gateway
7373
]
7474
}
75+
76+
resource "aws_api_gateway_integration" "get_document_reference_version" {
77+
rest_api_id = aws_api_gateway_rest_api.ndr_doc_store_api.id
78+
resource_id = module.document_reference_version_gateway.gateway_resource_id
79+
http_method = "GET"
80+
integration_http_method = "POST"
81+
type = "AWS_PROXY"
82+
uri = module.get-doc-ref-lambda.invoke_arn
83+
84+
depends_on = [
85+
module.document_reference_version_gateway,
86+
module.get-doc-ref-lambda,
87+
]
88+
}
Lines changed: 66 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,66 @@
1+
module "search_document_reference_history_lambda" {
2+
source = "./modules/lambda"
3+
name = "SearchDocumentReferenceHistory"
4+
handler = "handlers.search_document_reference_history_handler.lambda_handler"
5+
iam_role_policy_documents = [
6+
module.lloyd_george_reference_dynamodb_table.dynamodb_read_policy_document,
7+
module.ndr-lloyd-george-store.s3_read_policy_document,
8+
module.ndr-app-config.app_config_policy,
9+
]
10+
kms_deletion_window = var.kms_deletion_window
11+
rest_api_id = aws_api_gateway_rest_api.ndr_doc_store_api.id
12+
resource_id = module.document_reference_history_gateway.gateway_resource_id
13+
http_methods = ["GET"]
14+
api_execution_arn = aws_api_gateway_rest_api.ndr_doc_store_api.execution_arn
15+
lambda_environment_variables = {
16+
APPCONFIG_APPLICATION = module.ndr-app-config.app_config_application_id
17+
APPCONFIG_ENVIRONMENT = module.ndr-app-config.app_config_environment_id
18+
APPCONFIG_CONFIGURATION = module.ndr-app-config.app_config_configuration_profile_id
19+
WORKSPACE = terraform.workspace
20+
LLOYD_GEORGE_DYNAMODB_NAME = module.lloyd_george_reference_dynamodb_table.table_name
21+
}
22+
23+
depends_on = [
24+
aws_api_gateway_rest_api.ndr_doc_store_api,
25+
module.document_reference_history_gateway,
26+
]
27+
}
28+
29+
module "search_document_reference_history_lambda_alarm" {
30+
source = "./modules/lambda_alarms"
31+
lambda_function_name = module.search_document_reference_history_lambda.function_name
32+
lambda_timeout = module.search_document_reference_history_lambda.timeout
33+
lambda_name = "search_document_reference_history_handler"
34+
namespace = "AWS/Lambda"
35+
alarm_actions = [module.search_document_reference_history_lambda_alarm_topic.arn]
36+
ok_actions = [module.search_document_reference_history_lambda_alarm_topic.arn]
37+
}
38+
39+
module "search_document_reference_history_lambda_alarm_topic" {
40+
source = "./modules/sns"
41+
sns_encryption_key_id = module.sns_encryption_key.id
42+
topic_name = "search-document-reference-history-lambda-alarm-topic"
43+
topic_protocol = "email"
44+
is_topic_endpoint_list = true
45+
topic_endpoint_list = local.is_sandbox ? [] : nonsensitive(split(",", data.aws_ssm_parameter.cloud_security_notification_email_list.value))
46+
delivery_policy = jsonencode({
47+
"Version" : "2012-10-17",
48+
"Statement" : [
49+
{
50+
"Effect" : "Allow",
51+
"Principal" : {
52+
"Service" : "cloudwatch.amazonaws.com"
53+
},
54+
"Action" : [
55+
"SNS:Publish",
56+
],
57+
"Condition" : {
58+
"ArnLike" : {
59+
"aws:SourceArn" : "arn:aws:cloudwatch:eu-west-2:${data.aws_caller_identity.current.account_id}:alarm:*"
60+
}
61+
},
62+
"Resource" : "*"
63+
}
64+
]
65+
})
66+
}

infrastructure/modules/app_config/configurations/dev.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@
2929
},
3030
"userRestrictionEnabled": {
3131
"name": "userRestrictionEnabled"
32+
},
33+
"versionHistoryEnabled": {
34+
"name": "versionHistoryEnabled"
3235
}
3336
},
3437
"values": {
@@ -61,6 +64,9 @@
6164
},
6265
"userRestrictionEnabled": {
6366
"enabled": "true"
67+
},
68+
"versionHistoryEnabled": {
69+
"enabled": "true"
6470
}
6571
},
6672
"version": "1"

infrastructure/modules/app_config/configurations/pre-prod.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@
2929
},
3030
"userRestrictionEnabled": {
3131
"name": "userRestrictionEnabled"
32+
},
33+
"versionHistoryEnabled": {
34+
"name": "versionHistoryEnabled"
3235
}
3336
},
3437
"values": {
@@ -61,6 +64,9 @@
6164
},
6265
"userRestrictionEnabled": {
6366
"enabled": "false"
67+
},
68+
"versionHistoryEnabled": {
69+
"enabled": "false"
6470
}
6571
},
6672
"version": "1"

infrastructure/modules/app_config/configurations/prod.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@
2929
},
3030
"userRestrictionEnabled": {
3131
"name": "userRestrictionEnabled"
32+
},
33+
"versionHistoryEnabled": {
34+
"name": "versionHistoryEnabled"
3235
}
3336
},
3437
"values": {
@@ -61,6 +64,9 @@
6164
},
6265
"userRestrictionEnabled": {
6366
"enabled": "false"
67+
},
68+
"versionHistoryEnabled": {
69+
"enabled": "false"
6470
}
6571
},
6672
"version": "1"

infrastructure/modules/app_config/configurations/sandbox.json

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,9 @@
2929
},
3030
"userRestrictionEnabled": {
3131
"name": "userRestrictionEnabled"
32+
},
33+
"versionHistoryEnabled": {
34+
"name": "versionHistoryEnabled"
3235
}
3336
},
3437
"values": {
@@ -61,6 +64,9 @@
6164
},
6265
"userRestrictionEnabled": {
6366
"enabled": "true"
67+
},
68+
"versionHistoryEnabled": {
69+
"enabled": "true"
6470
}
6571
},
6672
"version": "1"

0 commit comments

Comments
 (0)