Skip to content

Commit b00d598

Browse files
committed
[NRL-853] Move notification email config out of lambda-error module and re-use for backup notifications
1 parent 732c833 commit b00d598

File tree

11 files changed

+33
-19
lines changed

11 files changed

+33
-19
lines changed

terraform/account-wide-infrastructure/dev/aws-backups.tf

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,8 @@ module "source" {
104104
#terraform_role_arn = data.aws_caller_identity.current.arn
105105
terraform_role_arn = "arn:aws:iam::${var.assume_account}:role/${var.assume_role}"
106106

107+
notification_target_email_addresses = local.notification_emails
108+
107109
backup_plan_config = {
108110
"compliance_resource_types" : [
109111
"S3"

terraform/account-wide-infrastructure/dev/cloudwatch.tf

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@ module "lambda_errors_cloudwatch_metric_alarm_dev" {
22
source = "../modules/lambda-errors-metric-alarm"
33
name_prefix = "nhsd-nrlf--dev"
44

5+
notification_emails = local.notification_emails
6+
57
evaluation_periods = 1
68
period = 60
79
threshold = 1
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,11 @@
11
data "aws_secretsmanager_secret_version" "identities_account_id" {
22
secret_id = aws_secretsmanager_secret.identities_account_id.name
33
}
4+
5+
data "aws_secretsmanager_secret" "emails" {
6+
name = "${local.prefix}-emails"
7+
}
8+
9+
data "aws_secretsmanager_secret_version" "emails" {
10+
secret_id = data.aws_secretsmanager_secret.emails.id
11+
}

terraform/account-wide-infrastructure/dev/locals.tf

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,6 @@ locals {
33
project = "nhsd-nrlf"
44
environment = terraform.workspace
55
prefix = "${local.project}--${local.environment}"
6+
7+
notification_emails = nonsensitive(toset(tolist(jsondecode(data.aws_secretsmanager_secret_version.emails.secret_string))))
68
}

terraform/account-wide-infrastructure/dev/secrets.tf

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@ resource "aws_secretsmanager_secret" "identities_account_id" {
22
name = "${local.prefix}--nhs-identities-account-id"
33
}
44

5+
resource "aws_secretsmanager_secret" "notification_email_addresses" {
6+
name = "${local.prefix}-dev-notification-email-addresses"
7+
}
8+
59
resource "aws_secretsmanager_secret" "dev_smoke_test_apigee_app" {
610
name = "${local.prefix}--dev--apigee-app--smoke-test"
711
description = "APIGEE App used to run Smoke Tests against the DEV environment"

terraform/account-wide-infrastructure/modules/backup-source/backup_notification.tf

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
resource "aws_backup_vault_notifications" "backup_notification" {
2-
count = var.notifications_target_email_address != "" ? 1 : 0
32
backup_vault_name = aws_backup_vault.main.name
4-
sns_topic_arn = aws_sns_topic.backup[0].arn
3+
sns_topic_arn = aws_sns_topic.backup.arn
54
backup_vault_events = [
65
"BACKUP_JOB_COMPLETED",
76
"RESTORE_JOB_COMPLETED",

terraform/account-wide-infrastructure/modules/backup-source/sns.tf

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
resource "aws_sns_topic" "backup" {
2-
count = var.notifications_target_email_address != "" ? 1 : 0
32
name = "${local.resource_name_prefix}-notifications"
43
kms_master_key_id = var.bootstrap_kms_key_arn
54
policy = data.aws_iam_policy_document.allow_backup_to_sns.json
@@ -27,9 +26,9 @@ data "aws_iam_policy_document" "allow_backup_to_sns" {
2726
}
2827

2928
resource "aws_sns_topic_subscription" "aws_backup_notifications_email_target" {
30-
count = var.notifications_target_email_address != "" ? 1 : 0
31-
topic_arn = aws_sns_topic.backup[0].arn
29+
for_each = var.notification_target_email_addresses
30+
topic_arn = aws_sns_topic.backup.arn
3231
protocol = "email"
33-
endpoint = var.notifications_target_email_address
32+
endpoint = each.value
3433
filter_policy = jsonencode({ "State" : [{ "anything-but" : "COMPLETED" }] })
3534
}

terraform/account-wide-infrastructure/modules/backup-source/variables.tf

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -8,10 +8,10 @@ variable "environment_name" {
88
type = string
99
}
1010

11-
variable "notifications_target_email_address" {
12-
description = "The email address to which backup notifications will be sent via SNS."
13-
type = string
14-
default = ""
11+
variable "notification_target_email_addresses" {
12+
description = "The email addresses to which backup notifications will be sent via SNS."
13+
type = set(string)
14+
default = []
1515
}
1616

1717
variable "bootstrap_kms_key_arn" {

terraform/account-wide-infrastructure/modules/lambda-errors-metric-alarm/secretsmanager.tf

Lines changed: 0 additions & 8 deletions
This file was deleted.

terraform/account-wide-infrastructure/modules/lambda-errors-metric-alarm/sns.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ resource "aws_sns_topic" "sns_topic" {
44
}
55

66
resource "aws_sns_topic_subscription" "sns_subscription" {
7-
for_each = nonsensitive(toset(tolist(jsondecode(data.aws_secretsmanager_secret_version.emails.secret_string))))
7+
for_each = var.notification_emails
88
topic_arn = aws_sns_topic.sns_topic.arn
99
protocol = "email"
1010
endpoint = sensitive(each.value)

0 commit comments

Comments
 (0)