module "automated_emails_s3_bucket" {
  source = "git@github.com:theorchard/terraform-s3.git//modules/s3_bucket?ref=3.15.7"

  bucket_name        = var.automated_emails_bucket_name
  env                = var.environment
  application_family = var.application_family

  apply_server_side_encryption_by_default = {
    sse_algorithm = "AES256"
  }
  s3_read_only_policy = true
  acceleration_status = "Enabled"

  lifecycle_rules_options_noncurrent_version_expiration = [
    {
      prefix  = ""
      enabled = true
      days    = 7
    }
  ]

  lifecycle_rules_abort_incomplete_multipart_upload_days = [
    {
      prefix  = ""
      enabled = true
      days    = 1
    }
  ]
}

resource "aws_lambda_permission" "allow_lambda_execution_from_bucket" {
  statement_id  = "AllowExecutionFromS3Bucket"
  action        = "lambda:InvokeFunction"
  function_name = module.lambda.lambda_name
  principal     = "s3.amazonaws.com"
  source_arn    = module.automated_emails_s3_bucket.s3_bucket_arn_output
}

resource "aws_s3_bucket_notification" "share_audience_bucket_notification" {
  bucket = module.automated_emails_s3_bucket.s3_bucket_name_output

  lambda_function {
    lambda_function_arn = module.lambda.lambda_arn
    events              = ["s3:ObjectCreated:*"]
    filter_prefix       = "raw/"
  }

  depends_on = [
    aws_lambda_permission.allow_lambda_execution_from_bucket,
  ]
}
