# Lambda definition for trigger_awal_plus_account_creation step

# allow invoking step function
data "aws_iam_policy_document" "trigger_awal_plus_account_creation_policy_document" {
  statement {
    actions = [
      "states:StartExecution",
    ]

    resources = [
      data.aws_sfn_state_machine.sfn_awal_plus_account_creation_arn.arn
    ]
  }

  statement {
    effect = "Allow"
    actions = [
      "dynamodb:GetItem"
    ]
    resources = [
      data.aws_dynamodb_table.account_creation_success_dynamodb_table.arn
    ]
  }
}

data "aws_dynamodb_table" "account_creation_success_dynamodb_table" {
  name = "${var.environment}_gda-account-creation-success"
}

resource "aws_iam_policy" "trigger_awal_plus_account_creation_policy" {
  name        = "${var.environment}-trigger-awal-plus-account-creation-lambda-policy"
  description = "trigger awal plus account creation lambda policy"
  policy      = data.aws_iam_policy_document.trigger_awal_plus_account_creation_policy_document.json
}

# lambda defination
module "lambda_trigger_awal_plus_account_creation" {
  source = "git@github.com:theorchard/terraform-lambda.git//?ref=3.1.0"

  environment              = var.environment
  use_container_image      = true
  lambda_name              = "lambda-trigger-awal-plus-account-creation"
  lambda_description       = "To trigger AWAL Plus Account creation step function."
  application_family       = var.application_family
  datadog_advanced_enabled = var.datadog_advanced_enabled

  lambda_function_environment_variables = {
    Environment   = var.environment
    SENTRY_DSN    = module.sentry_awal_plus_account_creation.sentry_key_dsn_public_output
    STEP_FN_ARN   = data.aws_sfn_state_machine.sfn_awal_plus_account_creation_arn.arn
    KAFKA_BROKERS = var.kafka_brokers
    KAFKA_TOPIC   = var.trigger_msk_deadletter_topic
  }

  lambda_function_timeout                        = var.lambda_default_timeout
  vpc_id                                         = var.vpc_id
  vpc_subnet_ids                                 = var.vpc_subnet_ids
  lambda_function_reserved_concurrent_executions = var.trigger_lambda_concurrent_executions
  datadog_enabled                                = var.datadog_enabled

  msk_event_enabled                      = true
  event_source_mapping_msk_cluster_name  = var.trigger_msk_cluster_name
  event_source_mapping_msk_cluster_uuid  = var.trigger_msk_cluster_uuid
  event_source_mapping_batch_size        = 1
  msk_topics                             = [var.trigger_awal_plus_account_creation_topic]
  event_source_mapping_starting_position = "LATEST"

  iam_managed_policy_attachments = [
    aws_iam_policy.trigger_awal_plus_account_creation_policy.arn
  ]

}


# stage datadog creds and create dashboards.
module "datadog_lambda_trigger_awal_plus_account_creation_lambda" {
  source = "git@github.com:theorchard/terraform-datadog.git//modules/lambda?ref=4.12.0"

  environment                       = var.environment
  service_name                      = "lambda-trigger-awal-plus-account-creation"
  lambda_invocation_monitor_enabled = false
}
