Răsfoiți Sursa

Merge pull request #225 from mdr-engineering/feature/bp_MSOCI-1771_dgi_customer

Improves Portal Lambda
Brad Poulton 4 ani în urmă
părinte
comite
d27706990d
2 a modificat fișierele cu 42 adăugiri și 47 ștergeri
  1. 39 46
      base/customer_portal_lambda/main.tf
  2. 3 1
      base/customer_portal_lambda/vars.tf

+ 39 - 46
base/customer_portal_lambda/main.tf

@@ -1,18 +1,29 @@
+locals {
+  environment_vars = {
+      "HTTP_PROXY"             = "http://${var.proxy}"
+      "HTTPS_PROXY"            = "http://${var.proxy}"
+      "NO_PROXY"               = "${var.dns_info["legacy_private"]["zone"]},${var.dns_info["private"]["zone"]}"
+      "VAULT_HOST"             = "vault.${var.dns_info["private"]["zone"]}"
+      "VAULT_PATH"             = "portal/data/lambda_sync_env"
+      "VERIFY_PORTAL_SSL"      = "0"
+  }
+}
+
 data "aws_iam_policy_document" "policy_portal_data_sync_lambda" {
-	statement {
-		effect = "Allow"
-		actions = [
-		  "ec2:CreateNetworkInterface",
-		  "logs:CreateLogStream",
-		  "ec2:DescribeNetworkInterfaces",
-		  "logs:DescribeLogStreams",
-		  "ec2:DeleteNetworkInterface",
-		  "logs:PutRetentionPolicy",
-		  "logs:CreateLogGroup",
-		  "logs:PutLogEvents"
-		]
-		resources = ["*"]
-	}
+  statement {
+    effect = "Allow"
+    actions = [
+      "ec2:CreateNetworkInterface",
+      "logs:CreateLogStream",
+      "ec2:DescribeNetworkInterfaces",
+      "logs:DescribeLogStreams",
+      "ec2:DeleteNetworkInterface",
+      "logs:PutRetentionPolicy",
+      "logs:CreateLogGroup",
+      "logs:PutLogEvents"
+    ]
+    resources = ["*"]
+  }
 }
 
 resource "aws_iam_policy" "policy_portal_data_sync_lambda" {
@@ -87,38 +98,20 @@ resource "aws_security_group_rule" "portal_lambda_splunk_in" {
 # Env variables for bootstrap only; true secrets should be in vault
 resource "aws_lambda_function" "portal_data_sync" {
   description      = "Sync data between Splunk and Portal"
-	filename         = "code.zip"
-	source_code_hash = filebase64sha256("code.zip")
-	function_name    = "portal_data_sync"
-	role             = aws_iam_role.portal-lambda-role.arn
-	handler          = "lambda_function.lambda_handler"
-	runtime          = "python3.7"
-	timeout          = "600"
-	vpc_config {
-		subnet_ids          = var.subnets
-		security_group_ids  = [ data.aws_security_group.typical-host.id, aws_security_group.portal_lambda_splunk_sg.id ]
-	}
-	environment { 
-		variables = {
-			"CUSTOMER_1_NAME"        = "AFS"
-			"CUSTOMER_2_NAME"        = "NGA"
-			"CUSTOMER_3_NAME"        = "MOOSE"
-			"CUSTOMER_5_NAME"        = "MA_COVID"
-			"CUSTOMER_6_NAME"        = "LA_COVID"
-			"CUSTOMER_7_NAME"        = "DC_COVID"
-			"CUSTOMER_8_NAME"        = "NIH"
-			"CUSTOMER_9_NAME"        = "BAS"
-			"CUSTOMER_10_NAME"       = "FRTIB"
-			"CUSTOMER_11_NAME"       = "DOED"
-			"CUSTOMER_12_NAME"       = "CA_COVID"      
-			"HTTP_PROXY"             = "http://${var.proxy}"
-			"HTTPS_PROXY"            = "http://${var.proxy}"
-			"NO_PROXY"               = "${var.dns_info["legacy_private"]["zone"]},${var.dns_info["private"]["zone"]}"
-			"VAULT_HOST"             = "vault.${var.dns_info["private"]["zone"]}"
-			"VAULT_PATH"             = "portal/data/lambda_sync_env"
-			"VERIFY_PORTAL_SSL"      = "0"
-		}
-	}
+  filename         = "code.zip"
+  source_code_hash = filebase64sha256("code.zip")
+  function_name    = "portal_data_sync"
+  role             = aws_iam_role.portal-lambda-role.arn
+  handler          = "lambda_function.lambda_handler"
+  runtime          = "python3.7"
+  timeout          = "720"
+  vpc_config {
+    subnet_ids          = var.subnets
+    security_group_ids  = [ data.aws_security_group.typical-host.id, aws_security_group.portal_lambda_splunk_sg.id ]
+  }
+  environment { 
+    variables = merge(var.customer_vars, local.environment_vars)
+  }
   tags = merge(var.standard_tags, var.tags)
 
   lifecycle {

+ 3 - 1
base/customer_portal_lambda/vars.tf

@@ -12,4 +12,6 @@ variable "aws_account_id" { type = string }
 variable "common_services_account" { type = string }
 variable "vpc_id" { type = string }
 variable "subnets" { type = list(string) }
-variable "proxy" { type = string }
+variable "proxy" { type = string }
+variable "customer_vars" { type = map }
+