provider "aws" {
  region = var.region
}

terraform {
  backend "s3" {
    bucket  = "orcd-terraform-state"
    key     = "prod/product-physical-delivery/lambdas/product-hydrator/terraform.tfstate"
    region  = "us-east-1"
    encrypt = "true"
  }
}

data "aws_s3_bucket" "s3_bucket" {
  bucket = "${var.environment}-delivery"
}

data "aws_iam_policy" "physical_delivery_bucket_rwd_policy" {
  name = "S3-${var.environment}-delivery-physical-RWD"
}


// For product-hydrator lambda.
module "lambda_phy_delivery_product_hydrator" {
  source                                         = "git@github.com:theorchard/terraform-lambda.git?ref=4.3.0"
  environment                                    = var.environment
  lambda_name                                    = var.lambda_name
  lambda_description                             = "Hydrate Product metadata."
  lambda_function_timeout                        = "300"
  use_container_image                            = true
  vpc_subnet_ids                                 = var.vpc_subnet_ids
  vpc_enabled                                    = true
  vpc_id                                         = var.vpc_id
  datadog_advanced_enabled                       = true
  application_family                             = var.application_family
  lambda_function_reserved_concurrent_executions = 30
  splitio_enabled                                = true

  lambda_function_environment_variables = {
    Environment        = var.environment
    SENTRY_DSN         = module.lambda_phy_delivery_product_hydrator_sentry_project.sentry_key_dsn_public_output
    BUCKET_NAME        = data.aws_s3_bucket.s3_bucket.bucket
    GRAPHQL_URL        = var.graphql_url
    SPLIT_API_KEY_PATH = "${var.environment}/split/API_KEY"
  }

  iam_managed_policy_attachments = [
    data.aws_iam_policy.physical_delivery_bucket_rwd_policy.arn
  ]
}

module "lambda_phy_delivery_product_hydrator_sentry_project" {
  source             = "git@github.com:theorchard/terraform-sentry//?ref=4.1.2"
  service_name       = var.lambda_name
  environment        = var.environment
  platform           = "node"
  application_family = var.application_family
  teams              = [var.environment]
}

module "lambda_phy_delivery_product_hydrator_datadog_monitors" {
  source                            = "git@github.com:theorchard/terraform-datadog.git//modules/lambda?ref=6.13.9"
  service_name                      = var.lambda_name
  environment                       = var.environment
  notification_endpoints            = var.slack_alert_channel
  escalation_notification_endpoints = var.slack_alert_channel
}
