cdh-terraform/apps/cdh-maas/main/main.tf

125 lines
4.0 KiB
HCL

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
}
}
}