locals {
  enabled  = var.enabled ? "ENABLED" : "DISABLED"
  image_id = var.custom_image_id == "" ? data.aws_ami.latest_ecs.id : var.custom_image_id
  name     = "${var.env_prefix}-${var.project_group}-${var.name}"
}

data "aws_ami" "latest_ecs" {
  most_recent = true
  owners      = ["591542846629"] # AWS

  filter {
    name   = "name"
    values = ["*amazon-ecs-optimized"]
  }

  filter {
    name   = "virtualization-type"
    values = ["hvm"]
  }
}

resource "aws_batch_compute_environment" "main" {
  name         = var.prefix ? null : local.name
  name_prefix  = var.prefix ? local.name : null
  service_role = var.batch_service_role
  state        = local.enabled
  type         = "MANAGED"

  compute_resources {
    type               = "EC2"
    instance_role      = var.instance_role
    instance_type      = var.instance_types
    max_vcpus          = var.max_vcpus
    min_vcpus          = var.min_vcpus
    ec2_key_pair       = var.ec2_key_pair
    image_id           = local.image_id
    security_group_ids = var.security_groups
    subnets            = var.subnets
    tags               = var.common_tags
  }

  lifecycle {
    ignore_changes        = [compute_resources[0].desired_vcpus, compute_resources[0].image_id]
    create_before_destroy = true
  }
}
