provider "aws" {
  region = "us-east-1"
}

data "aws_caller_identity" "current" {}

# Terraform backends cannot contain interpolations
terraform {
  backend "s3" {
    bucket  = "orcd-terraform-state"
    key     = "prod/lambda-logging-upload-audit-logs-to-s3/terraform.tfstate"
    region  = "us-east-1"
    encrypt = "true"
  }
}

module "lambda_upload_audit_logs_to_s3_sentry_project" {
  source = "git@github.com:theorchard/terraform-sentry.git?ref=2.0.1"

  environment        = var.environment
  platform           = "python"
  service_name       = "lambda-logging-upload-to-s3"
  application_family = var.application_family
}

module "upload_audit_logs_to_s3_lambda" {
  source = "git@github.com:theorchard/terraform-lambda.git?ref=2.4.0"

  environment                                    = var.environment
  application_family                             = var.application_family
  lambda_name                                    = var.lambda_name
  lambda_description                             = "This Lambda uploads logs to S3 from lambda-logging repo"
  lambda_function_timeout                        = "300"
  lambda_function_memory_size                    = 512
  use_container_image                            = true
  datadog_advanced_enabled                       = true
  event_source_mapping_batch_size                = "5"
  event_source_mapping_enabled                   = true
  event_source_mapping_resource_type             = "kinesis"
  event_source_mapping_starting_position         = "LATEST"
  event_source_mapping_stream_name               = "${var.environment}-maxwell-cloudsearch"
  iam_policy_file_enabled                        = true
  iam_policy_file_location                       = var.iam_policy_file_location
  lambda_function_reserved_concurrent_executions = "3" // This will be limited by the number of shards the Kinesis stream has.
  vpc_enabled                                    = true
  vpc_id                                         = var.vpc_id
  vpc_subnet_ids                                 = var.vpc_subnet_ids
  lambda_function_environment_variables = {
    Environment        = var.environment
    AWS_S3_BUCKET_NAME = "${var.environment}-orchard-logging"
    SENTRY_DSN         = var.SENTRY_DSN
  }
}

module "datadog_lambda_upload_audit_logs_to_s3" {
  source = "git@github.com:theorchard/terraform-datadog.git//modules/lambda?ref=3.0.18"

  environment                       = var.environment
  service_name                      = var.lambda_name
  notification_endpoints            = var.datadog_notification_endpoints
  lambda_invocation_monitor_enabled = true
}
