module "dt-cdh-lambda" { source = "../../../modules/lambda" region = var.region environment = var.environment project = var.project main_module = var.main_module tags = var.tags name = local.env.lambdaName timeout = 900 additional_permissions = [ { actions = ["S3:*"] resources = [local.env.s3SourceLayerArn, "${local.env.s3SourceLayerArn}/*"] }, { actions = ["kms:GenerateDataKey", "kms:Decrypt"] resources = [local.env.kmsKey] }, { actions = ["secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret"] resources = [module.lambda_secret_dt.secret_arn, module.lambda_secret_slo.secret_arn] } ] environment_vars = { SOURCE_BUCKET = local.env.s3SourceLayer ENV_SECRET_ARN = module.lambda_secret_dt.secret_arn SLO_SECRET_ARN = module.lambda_secret_slo.secret_arn } description = "" handler = "createReport.lambda_handler" memory = 2048 path_to_function = "../../apps/cdh-maas/main/lambda_function" runtime = "python3.9" cron = { hourly = { schedule = "cron(0 2 * * ? *)" payload = jsonencode( { target = "hourly" } ) description = "schedule: daily at 2:00am UTC" } daily = { schedule = "cron(30 2 * * ? *)" payload = jsonencode( { target = "daily" } ) description = "schedule: daily at 2:30am UTC" } weekly = { schedule = "cron(0 3 ? * MON *)" payload = jsonencode({ "target" = "weekly" }) description = "schedule: weekly at Monday 3:00am UTC" } monthly = { schedule = "cron(30 3 1 * ? *)" payload = jsonencode({ "target" = "monthly" }) description = "schedule: first day of each month at 3:30am UTC" } } } module "lambda_secret_dt" { source = "../../../modules/secrets-manager" region = var.region environment = var.environment project = var.project main_module = var.main_module tags = var.tags kms_key_id = local.env.kmsKey secret_name = local.env.secretNameForDT module_enabled = true } module "lambda_secret_slo" { source = "../../../modules/secrets-manager" region = var.region environment = var.environment project = var.project main_module = var.main_module tags = var.tags kms_key_id = local.env.kmsKey secret_name = local.env.secretNameForSLO module_enabled = true } module "dt-cdh-lambda-prepared" { source = "../../../modules/lambda" region = var.region environment = var.environment project = var.project main_module = var.main_module tags = var.tags name = local.env.lambdaPreparedName timeout = 900 reserved_concurrent_executions = 1 additional_permissions = [ { actions = ["S3:*"] resources = [ local.env.s3SourceLayerArn, "${local.env.s3SourceLayerArn}/*", local.env.s3PreparedLayerArn, "${local.env.s3PreparedLayerArn}/*" ] }, { actions = ["kms:GenerateDataKey", "kms:Decrypt"] resources = [local.env.kmsKey] }, { actions = ["secretsmanager:GetSecretValue", "secretsmanager:DescribeSecret"] resources = [module.lambda_secret_dt.secret_arn, module.lambda_secret_slo.secret_arn] }, { actions = ["sns:Subscribe"] resources = [local.env.snsSourceTopic] } ] environment_vars = { SOURCE_BUCKET = local.env.s3SourceLayer PREPARED_BUCKET = local.env.s3PreparedLayer SLO_SECRET_ARN = module.lambda_secret_slo.secret_arn } description = "" handler = "reformatData.lambda_handler" memory = 2048 path_to_function = "../../apps/cdh-maas/main/lambda_prepared_layer" runtime = "python3.9" snsTrigger = { source = { topic = local.env.snsSourceTopic } } }