diff --git a/infrastructure/account/csoc_eventforwarder_role.tf b/infrastructure/account/csoc_eventforwarder_role.tf index fc9ad6de6..70d84ffc6 100644 --- a/infrastructure/account/csoc_eventforwarder_role.tf +++ b/infrastructure/account/csoc_eventforwarder_role.tf @@ -27,7 +27,7 @@ resource "aws_iam_role_policy" "eventbridge_forwarder_policy" { Effect = "Allow", Action = ["events:PutEvents"], Resource = [ - "arn:aws:events:eu-west-2:${var.csoc_account_id}:event-bus/shield-eventbus" + "arn:aws:events:${var.aws_region}:${var.csoc_account_id}:event-bus/shield-eventbus" ] }] }) diff --git a/infrastructure/account/endpoints.tf b/infrastructure/account/endpoints.tf index a29c7faf5..98ff22526 100644 --- a/infrastructure/account/endpoints.tf +++ b/infrastructure/account/endpoints.tf @@ -1,8 +1,8 @@ data "aws_ec2_managed_prefix_list" "egress" { for_each = toset([ "com.amazonaws.global.cloudfront.origin-facing", - "com.amazonaws.eu-west-2.dynamodb", - "com.amazonaws.eu-west-2.s3" + "com.amazonaws.${var.aws_region}.dynamodb", + "com.amazonaws.${var.aws_region}.s3" ]) name = each.value diff --git a/infrastructure/account/shield_protection.tf b/infrastructure/account/shield_protection.tf index 4b0ed706c..0809c97d0 100644 --- a/infrastructure/account/shield_protection.tf +++ b/infrastructure/account/shield_protection.tf @@ -101,7 +101,7 @@ resource "aws_cloudwatch_event_rule" "shield_ddos_rule_regional" { resource "aws_cloudwatch_event_target" "shield_ddos_target_regional" { rule = aws_cloudwatch_event_rule.shield_ddos_rule_regional.name target_id = "csoc-eventbus" - arn = "arn:aws:events:eu-west-2:${var.csoc_account_id}:event-bus/shield-eventbus" + arn = "arn:aws:events:${var.aws_region}:${var.csoc_account_id}:event-bus/shield-eventbus" role_arn = aws_iam_role.eventbridge_forwarder_role.arn } diff --git a/infrastructure/instance/ack_lambda.tf b/infrastructure/instance/ack_lambda.tf index 4b30a4cd2..ceca5349a 100644 --- a/infrastructure/instance/ack_lambda.tf +++ b/infrastructure/instance/ack_lambda.tf @@ -1,11 +1,9 @@ # Define the directory containing the Docker image and calculate its SHA-256 hash for triggering redeployments locals { - ack_lambda_dir = abspath("${path.root}/../../lambdas/ack_backend") - - ack_lambda_files = fileset(local.ack_lambda_dir, "**") - + ack_lambda_dir = abspath("${path.root}/../../lambdas/ack_backend") + ack_lambda_files = fileset(local.ack_lambda_dir, "**") ack_lambda_dir_sha = sha1(join("", [for f in local.ack_lambda_files : filesha1("${local.ack_lambda_dir}/${f}")])) - ack_lambda_name = "${local.short_prefix}-ack_lambda" + ack_lambda_name = "${local.short_prefix}-ack-lambda" } @@ -72,7 +70,7 @@ resource "aws_ecr_repository_policy" "ack_lambda_ECRImageRetreival_policy" { ], "Condition" : { "StringLike" : { - "aws:sourceArn" : "arn:aws:lambda:eu-west-2:${var.immunisation_account_id}:function:${local.short_prefix}-ack-lambda" + "aws:sourceArn" : "arn:aws:lambda:${var.aws_region}:${var.immunisation_account_id}:function:${local.ack_lambda_name}" } } } @@ -82,7 +80,7 @@ resource "aws_ecr_repository_policy" "ack_lambda_ECRImageRetreival_policy" { # IAM Role for Lambda resource "aws_iam_role" "ack_lambda_exec_role" { - name = "${local.short_prefix}-ack-lambda-exec-role" + name = "${local.ack_lambda_name}-exec-role" assume_role_policy = jsonencode({ Version = "2012-10-17", Statement = [{ @@ -98,7 +96,7 @@ resource "aws_iam_role" "ack_lambda_exec_role" { # Policy for Lambda execution role resource "aws_iam_policy" "ack_lambda_exec_policy" { - name = "${local.short_prefix}-ack-lambda-exec-policy" + name = "${local.ack_lambda_name}-exec-policy" policy = jsonencode({ Version = "2012-10-17", Statement = [ @@ -109,7 +107,7 @@ resource "aws_iam_policy" "ack_lambda_exec_policy" { "logs:CreateLogStream", "logs:PutLogEvents" ] - Resource = "arn:aws:logs:eu-west-2:${var.immunisation_account_id}:log-group:/aws/lambda/${local.short_prefix}-ack-lambda:*" + Resource = "arn:aws:logs:${var.aws_region}:${var.immunisation_account_id}:log-group:/aws/lambda/${local.ack_lambda_name}:*" }, { Effect = "Allow" @@ -145,7 +143,7 @@ resource "aws_iam_policy" "ack_lambda_exec_policy" { "sqs:DeleteMessage", "sqs:GetQueueAttributes" ], - Resource = "arn:aws:sqs:eu-west-2:${var.immunisation_account_id}:${local.short_prefix}-ack-metadata-queue.fifo" }, + Resource = "arn:aws:sqs:${var.aws_region}:${var.immunisation_account_id}:${local.short_prefix}-ack-metadata-queue.fifo" }, { "Effect" : "Allow", "Action" : [ @@ -159,7 +157,7 @@ resource "aws_iam_policy" "ack_lambda_exec_policy" { } resource "aws_cloudwatch_log_group" "ack_lambda_log_group" { - name = "/aws/lambda/${local.short_prefix}-ack-lambda" + name = "/aws/lambda/${local.ack_lambda_name}" retention_in_days = 30 } @@ -200,7 +198,7 @@ resource "aws_iam_role_policy_attachment" "lambda_kms_policy_attachment" { # Lambda Function with Security Group and VPC. resource "aws_lambda_function" "ack_processor_lambda" { - function_name = "${local.short_prefix}-ack-lambda" + function_name = local.ack_lambda_name role = aws_iam_role.ack_lambda_exec_role.arn package_type = "Image" image_uri = module.ack_processor_docker_image.image_uri diff --git a/infrastructure/instance/batch_processor_filter_lambda.tf b/infrastructure/instance/batch_processor_filter_lambda.tf index 89b821e40..f1bc1b5da 100644 --- a/infrastructure/instance/batch_processor_filter_lambda.tf +++ b/infrastructure/instance/batch_processor_filter_lambda.tf @@ -3,6 +3,7 @@ locals { batch_processor_filter_lambda_dir = abspath("${path.root}/../../lambdas/batch_processor_filter") batch_processor_filter_lambda_files = fileset(local.batch_processor_filter_lambda_dir, "**") batch_processor_filter_lambda_dir_sha = sha1(join("", [for f in local.batch_processor_filter_lambda_files : filesha1("${local.batch_processor_filter_lambda_dir}/${f}")])) + batch_processor_filter_lambda_name = "${local.short_prefix}-batch-processor-filter-lambda" } resource "aws_ecr_repository" "batch_processor_filter_lambda_repository" { @@ -69,7 +70,7 @@ resource "aws_ecr_repository_policy" "batch_processor_filter_lambda_ECRImageRetr ], "Condition" : { "StringLike" : { - "aws:sourceArn" : "arn:aws:lambda:${var.aws_region}:${var.immunisation_account_id}:function:${local.short_prefix}-batch-processor-filter-lambda" + "aws:sourceArn" : "arn:aws:lambda:${var.aws_region}:${var.immunisation_account_id}:function:${local.batch_processor_filter_lambda_name}" } } } @@ -79,7 +80,7 @@ resource "aws_ecr_repository_policy" "batch_processor_filter_lambda_ECRImageRetr # IAM Role for Lambda resource "aws_iam_role" "batch_processor_filter_lambda_exec_role" { - name = "${local.short_prefix}-batch-processor-filter-lambda-exec-role" + name = "${local.batch_processor_filter_lambda_name}-exec-role" assume_role_policy = jsonencode({ Version = "2012-10-17", Statement = [{ @@ -95,7 +96,7 @@ resource "aws_iam_role" "batch_processor_filter_lambda_exec_role" { # Policy for Lambda execution role resource "aws_iam_policy" "batch_processor_filter_lambda_exec_policy" { - name = "${local.short_prefix}-batch-processor-filter-lambda-exec-policy" + name = "${local.batch_processor_filter_lambda_name}-exec-policy" policy = jsonencode({ Version = "2012-10-17", Statement = [ @@ -106,7 +107,7 @@ resource "aws_iam_policy" "batch_processor_filter_lambda_exec_policy" { "logs:CreateLogStream", "logs:PutLogEvents" ] - Resource = "arn:aws:logs:${var.aws_region}:${var.immunisation_account_id}:log-group:/aws/lambda/${local.short_prefix}-batch-processor-filter-lambda:*" + Resource = "arn:aws:logs:${var.aws_region}:${var.immunisation_account_id}:log-group:/aws/lambda/${local.batch_processor_filter_lambda_name}:*" }, { Effect = "Allow", @@ -157,7 +158,7 @@ resource "aws_iam_policy" "batch_processor_filter_lambda_exec_policy" { # Policy for Lambda to interact with SQS resource "aws_iam_policy" "batch_processor_filter_lambda_sqs_policy" { - name = "${local.short_prefix}-batch-processor-filter-lambda-sqs-policy" + name = "${local.batch_processor_filter_lambda_name}-sqs-policy" policy = jsonencode({ Version = "2012-10-17", @@ -183,7 +184,7 @@ resource "aws_iam_policy" "batch_processor_filter_lambda_sqs_policy" { } resource "aws_iam_policy" "batch_processor_filter_lambda_kms_access_policy" { - name = "${local.short_prefix}-batch-processor-filter-lambda-kms-policy" + name = "${local.batch_processor_filter_lambda_name}-kms-policy" description = "Allow Lambda to decrypt environment variables" policy = jsonencode({ @@ -261,7 +262,7 @@ resource "aws_iam_role_policy_attachment" "batch_processor_filter_lambda_dynamo_ # Lambda Function with Security Group and VPC. resource "aws_lambda_function" "batch_processor_filter_lambda" { - function_name = "${local.short_prefix}-batch-processor-filter-lambda" + function_name = local.batch_processor_filter_lambda_name role = aws_iam_role.batch_processor_filter_lambda_exec_role.arn package_type = "Image" image_uri = module.batch_processor_filter_docker_image.image_uri @@ -293,7 +294,7 @@ resource "aws_lambda_function" "batch_processor_filter_lambda" { } resource "aws_cloudwatch_log_group" "batch_processor_filter_lambda_log_group" { - name = "/aws/lambda/${local.short_prefix}-batch-processor-filter-lambda" + name = "/aws/lambda/${local.batch_processor_filter_lambda_name}" retention_in_days = 30 } @@ -322,7 +323,7 @@ resource "aws_cloudwatch_log_metric_filter" "batch_processor_filter_error_logs" resource "aws_cloudwatch_metric_alarm" "batch_processor_filter_error_alarm" { count = var.error_alarm_notifications_enabled ? 1 : 0 - alarm_name = "${local.short_prefix}-batch-processor-filter-lambda-error" + alarm_name = "${local.batch_processor_filter_lambda_name}-error" comparison_operator = "GreaterThanOrEqualToThreshold" evaluation_periods = 1 metric_name = "${local.short_prefix}-BatchProcessorFilterErrorLogs" diff --git a/infrastructure/instance/delta.tf b/infrastructure/instance/delta.tf index a9e5efd14..1647578f4 100644 --- a/infrastructure/instance/delta.tf +++ b/infrastructure/instance/delta.tf @@ -1,10 +1,9 @@ locals { - delta_lambda_dir = abspath("${path.root}/../../lambdas/delta_backend") - delta_files = fileset(local.delta_lambda_dir, "**") - delta_dir_sha = sha1(join("", [for f in local.delta_files : filesha1("${local.delta_lambda_dir}/${f}")])) - function_name = "delta" - dlq_name = "delta-dlq" - sns_name = "delta-sns" + delta_lambda_dir = abspath("${path.root}/../../lambdas/delta_backend") + delta_files = fileset(local.delta_lambda_dir, "**") + delta_dir_sha = sha1(join("", [for f in local.delta_files : filesha1("${local.delta_lambda_dir}/${f}")])) + delta_lambda_name = "${local.short_prefix}-delta-lambda" + dlq_name = "delta-dlq" } resource "aws_ecr_repository" "delta_lambda_repository" { @@ -71,7 +70,7 @@ resource "aws_ecr_repository_policy" "delta_lambda_ECRImageRetreival_policy" { ], "Condition" : { "StringLike" : { - "aws:sourceArn" : "arn:aws:lambda:eu-west-2:${var.immunisation_account_id}:function:${local.short_prefix}-${local.function_name}" + "aws:sourceArn" : "arn:aws:lambda:${var.aws_region}:${var.immunisation_account_id}:function:${local.delta_lambda_name}" } } } @@ -101,33 +100,29 @@ data "aws_iam_policy_document" "delta_policy_document" { } resource "aws_iam_role" "delta_lambda_role" { - name = "${local.short_prefix}-${local.function_name}-role" - assume_role_policy = < dict: - return {"validation_rules": data} diff --git a/lambdas/redis_sync/src/transform_map.py b/lambdas/redis_sync/src/transform_map.py index b3ee88f8e..e274fcc6e 100644 --- a/lambdas/redis_sync/src/transform_map.py +++ b/lambdas/redis_sync/src/transform_map.py @@ -3,7 +3,6 @@ from transform_configs import ( transform_supplier_permissions, transform_vaccine_map, - transform_validation_rules, ) """ @@ -18,8 +17,6 @@ def transform_map(data, file_type) -> dict: return transform_supplier_permissions(data) if file_type == RedisCacheKey.DISEASE_MAPPING_FILE_KEY: return transform_vaccine_map(data) - if file_type == RedisCacheKey.VALIDATION_RULES_FILE_KEY: - return transform_validation_rules(data) logger.info("No specific transformation defined for file type: %s", file_type) return data # Default case, return data as is if no transformation is defined diff --git a/lambdas/redis_sync/tests/test_transform_config.py b/lambdas/redis_sync/tests/test_transform_config.py index 408dd572d..d81611064 100644 --- a/lambdas/redis_sync/tests/test_transform_config.py +++ b/lambdas/redis_sync/tests/test_transform_config.py @@ -5,7 +5,6 @@ from transform_configs import ( transform_supplier_permissions, transform_vaccine_map, - transform_validation_rules, ) @@ -47,12 +46,6 @@ def test_ods_code_to_supplier(self): result = transform_supplier_permissions(self.supplier_data) self.assertEqual(result["ods_code_to_supplier"], expected) - def test_validation_rules(self): - # validation schema is simple json returned as is to key "validation_rules" - sample_schema = {"type": "object", "properties": {"name": {"type": "string"}}} - result = transform_validation_rules(sample_schema) - self.assertEqual(result, {"validation_rules": sample_schema}) - def test_empty_input(self): result = transform_supplier_permissions([]) self.assertEqual( diff --git a/lambdas/redis_sync/tests/test_transform_map.py b/lambdas/redis_sync/tests/test_transform_map.py index a3e2a3973..5bdf9e3a4 100644 --- a/lambdas/redis_sync/tests/test_transform_map.py +++ b/lambdas/redis_sync/tests/test_transform_map.py @@ -14,7 +14,6 @@ def setUp(self): return_value={"result": "supplier"}, ).start() self.mock_vaccine_map = patch("transform_map.transform_vaccine_map", return_value={"result": "vaccine"}).start() - self.mock_validation_rules = patch("transform_map.transform_validation_rules").start() def tearDown(self): patch.stopall() @@ -31,7 +30,6 @@ def test_permissions_config_file_key_calls_supplier_permissions(self): def test_disease_mapping_file_key_calls_vaccine_map(self): data = {"other": "data"} - self.mock_validation_rules.return_value = {"validation_rules": data} result = transform_map(data, RedisCacheKey.DISEASE_MAPPING_FILE_KEY) self.mock_vaccine_map.assert_called_once_with(data) self.assertEqual(result, {"result": "vaccine"}) @@ -39,14 +37,3 @@ def test_disease_mapping_file_key_calls_vaccine_map(self): "Transforming data for file type: %s", RedisCacheKey.DISEASE_MAPPING_FILE_KEY, ) - - def test_validation_rules_file_key_calls_validation_rules(self): - data = {"validation": "schema"} - self.mock_validation_rules.return_value = {"validation_rules": data} - result = transform_map(data, RedisCacheKey.VALIDATION_RULES_FILE_KEY) - self.mock_validation_rules.assert_called_once_with(data) - self.assertEqual(result, {"validation_rules": data}) - self.mock_logger_info.assert_any_call( - "Transforming data for file type: %s", - RedisCacheKey.VALIDATION_RULES_FILE_KEY, - )