provider "aws" {
  region = var.aws_region
}

# Terraform backends cannot contain interpolations
terraform {
  backend "s3" {
    bucket  = "shared-orcd-terraform-state"
    key     = "shared/ecr/replication/terraform.tfstate"
    region  = "us-east-1"
    encrypt = "true"
  }
}

data "aws_caller_identity" "current" {}

resource "aws_ecr_replication_configuration" "main" {
  replication_configuration {
    # Backup replication rule
    rule {
      destination {
        region      = var.aws_region
        registry_id = var.backup_account_id
      }
    }

    # Sidecar replication rules
    dynamic "rule" {
      for_each = var.sidecar_repository_prefixes
      content {
        dynamic "destination" {
          for_each = var.sidecar_replication_regions
          content {
            region      = destination.value
            registry_id = data.aws_caller_identity.current.account_id
          }
        }

        repository_filter {
          filter      = rule.value
          filter_type = "PREFIX_MATCH"
        }
      }
    }
  }
}
