resource "aws_iam_role" "alternate_contact_role" { name = var.alternate_contact_role managed_policy_arns = [aws_iam_policy.account_management_policy.arn] assume_role_policy = data.aws_iam_policy_document.lambda_assume_role_policy.json tags = var.tags } resource "aws_iam_policy" "account_management_policy" { name = var.alternate_contact_policy policy = data.aws_iam_policy_document.account_management_policy.json tags = var.tags } resource "aws_lambda_function" "alternate_contact_lambda" { #checkov:skip=CKV_AWS_50:Disabled Xray tracing #checkov:skip=CKV_AWS_116 #checkov:skip=CKV_AWS_117 #checkov:skip=CKV_AWS_173 filename = "${path.root}/lambda/alternate-contact.zip" function_name = var.lambda_function_name role = aws_iam_role.alternate_contact_role.arn reserved_concurrent_executions = var.reserved_concurrent_executions handler = "alternate-contact.lambda_handler" runtime = "python3.9" tags = var.tags environment { variables = { security_alternate_contact = var.security_alternate_contact billing_alternate_contact = var.billing_alternate_contact operations_alternate_contact = var.operations_alternate_contact management_account_id = var.management_account_id } } } resource "aws_lambda_permission" "allow_cloudwatch_run" { statement_id = "AllowExecutionFromEventBridge" action = "lambda:InvokeFunction" function_name = aws_lambda_function.alternate_contact_lambda.function_name principal = "events.amazonaws.com" } # fix to run lambda during apply only # https://github.com/hashicorp/terraform-provider-aws/issues/4746 data "aws_lambda_invocation" "run" { count = var.invoke_lambda ? 1 : 0 function_name = aws_lambda_function.alternate_contact_lambda.function_name input = <