module "cf-templates-ulyvnw5x5esh-us-east-1" {
  #checkov:skip=CKV_AWS_145: Ensure that S3 buckets are encrypted with KMS by default
  #checkov:skip=CKV_AWS_21: Ensure all data stored in the S3 bucket have versioning enabled
  #checkov:skip=CKV_AWS_19: Ensure all data stored in the S3 bucket is securely encrypted at rest
  #checkov:skip=CKV_AWS_300: Ensure S3 lifecycle configuration sets period for aborting failed uploads
  source  = "terraform-aws-modules/s3-bucket/aws"
  version = "~> 3.11.0"
  bucket  = "cf-templates-ulyvnw5x5esh-us-east-1"
  versioning = {
    enabled = false
  }

  server_side_encryption_configuration = var.server_side_encryption_configuration
  logging = {
    target_bucket = "prod-switchboard-logs"
    target_prefix = "orch-switchboard-prod/"
  }
  object_ownership                      = "BucketOwnerEnforced"
  block_public_acls                     = var.block_public_acls
  ignore_public_acls                    = var.ignore_public_acls
  restrict_public_buckets               = var.restrict_public_buckets
  block_public_policy                   = var.block_public_policy
  force_destroy                         = var.force_destroy
  attach_policy                         = var.attach_policy
  policy                                = data.aws_iam_policy_document.cf-templates-ulyvnw5x5esh-us-east-1.json
  attach_deny_insecure_transport_policy = var.attach_deny_insecure_transport_policy
  attach_require_latest_tls_policy      = var.attach_require_latest_tls_policy
  tags = merge(var.tags,
    {

      Name           = "cf-templates-ulyvnw5x5esh-us-east-1",
      Environment    = "Prod",
      Terraform      = "True",
      Business-Unit  = "Digital-Supply-Chain",
      Classification = "internal-use-only",
      Project-Name   = "Switchboard",
      Project-Code   = "Switchboard",
      Owner          = "Robert Dewilder",
      Purpose        = "CLOUDOPS"

    }

  )
}

module "orch-switchboard-prod-athena-out" {
  #checkov:skip=CKV_AWS_145: Ensure that S3 buckets are encrypted with KMS by default
  #checkov:skip=CKV_AWS_21: Ensure all data stored in the S3 bucket have versioning enabled
  #checkov:skip=CKV_AWS_19: Ensure all data stored in the S3 bucket is securely encrypted at rest
  #checkov:skip=CKV_AWS_300: Ensure S3 lifecycle configuration sets period for aborting failed uploads
  source  = "terraform-aws-modules/s3-bucket/aws"
  version = "~> 3.11.0"
  bucket  = "orch-switchboard-prod-athena-out"
  versioning = {
    enabled = false
  }

  server_side_encryption_configuration = var.server_side_encryption_configuration
  logging = {
    target_bucket = "prod-switchboard-logs"
    target_prefix = "orch-switchboard-prod/"
  }
  object_ownership                      = "BucketOwnerEnforced"
  block_public_acls                     = var.block_public_acls
  ignore_public_acls                    = var.ignore_public_acls
  restrict_public_buckets               = var.restrict_public_buckets
  block_public_policy                   = var.block_public_policy
  force_destroy                         = var.force_destroy
  attach_policy                         = var.attach_policy
  policy                                = data.aws_iam_policy_document.orch-switchboard-prod-athena-out.json
  attach_deny_insecure_transport_policy = var.attach_deny_insecure_transport_policy
  attach_require_latest_tls_policy      = var.attach_require_latest_tls_policy
  tags = merge(var.tags,

    {
      Name           = "orch-switchboard-prod-athena-out",
      Environment    = "Prod",
      Terraform      = "True",
      Business-Unit  = "Digital-Supply-Chain",
      Classification = "internal-use-only",
      Project-Name   = "Switchboard",
      Project-Code   = "Switchboard",
      Owner          = "Robert Dewilder",
      Purpose        = "CLOUDOPS"

  })
}

module "orch-switchboard-prod-awsconfig" {
  #checkov:skip=CKV_AWS_145: Ensure that S3 buckets are encrypted with KMS by default
  #checkov:skip=CKV_AWS_21: Ensure all data stored in the S3 bucket have versioning enabled
  #checkov:skip=CKV_AWS_19: Ensure all data stored in the S3 bucket is securely encrypted at rest
  #checkov:skip=CKV_AWS_300: Ensure S3 lifecycle configuration sets period for aborting failed uploads
  source  = "terraform-aws-modules/s3-bucket/aws"
  version = "~> 3.11.0"
  bucket  = "orch-switchboard-prod-awsconfig"
  versioning = {
    enabled = false
  }

  server_side_encryption_configuration = var.server_side_encryption_configuration
  logging = {
    target_bucket = "prod-switchboard-logs"
    target_prefix = "orch-switchboard-prod/"
  }
  object_ownership                      = "BucketOwnerEnforced"
  block_public_acls                     = var.block_public_acls
  ignore_public_acls                    = var.ignore_public_acls
  restrict_public_buckets               = var.restrict_public_buckets
  block_public_policy                   = var.block_public_policy
  force_destroy                         = var.force_destroy
  attach_policy                         = var.attach_policy
  policy                                = data.aws_iam_policy_document.orch-switchboard-prod-awsconfig.json
  attach_deny_insecure_transport_policy = var.attach_deny_insecure_transport_policy
  attach_require_latest_tls_policy      = var.attach_require_latest_tls_policy
  tags = merge(var.tags,
    {

      Name           = "orch-switchboard-prod-awsconfig",
      Environment    = "Prod",
      Terraform      = "True",
      Business-Unit  = "Digital-Supply-Chain",
      Classification = "internal-use-only",
      Project-Name   = "Switchboard",
      Project-Code   = "Switchboard",
      Owner          = "Robert Dewilder",
      Purpose        = "CLOUDOPS"

  })
}

module "orch-switchboard-prod-cloudtrail" {
  #checkov:skip=CKV_AWS_145: Ensure that S3 buckets are encrypted with KMS by default
  #checkov:skip=CKV_AWS_21: Ensure all data stored in the S3 bucket have versioning enabled
  #checkov:skip=CKV_AWS_19: Ensure all data stored in the S3 bucket is securely encrypted at rest
  #checkov:skip=CKV_AWS_300: Ensure S3 lifecycle configuration sets period for aborting failed uploads
  source  = "terraform-aws-modules/s3-bucket/aws"
  version = "~> 3.11.0"
  bucket  = "orch-switchboard-prod-cloudtrail"
  versioning = {
    enabled = false
  }

  server_side_encryption_configuration = var.server_side_encryption_configuration
  logging = {
    target_bucket = "prod-switchboard-logs"
    target_prefix = "orch-switchboard-prod/"
  }
  object_ownership                      = "BucketOwnerEnforced"
  block_public_acls                     = var.block_public_acls
  ignore_public_acls                    = var.ignore_public_acls
  restrict_public_buckets               = var.restrict_public_buckets
  block_public_policy                   = var.block_public_policy
  force_destroy                         = var.force_destroy
  attach_policy                         = var.attach_policy
  policy                                = data.aws_iam_policy_document.orch-switchboard-prod-cloudtrail.json
  attach_deny_insecure_transport_policy = var.attach_deny_insecure_transport_policy
  attach_require_latest_tls_policy      = var.attach_require_latest_tls_policy
  tags = merge(var.tags, {

    Name           = "orch-switchboard-prod-cloudtrail",
    Environment    = "Prod",
    Terraform      = "True",
    Business-Unit  = "Digital-Supply-Chain",
    Classification = "internal-use-only",
    Project-Name   = "Switchboard",
    Project-Code   = "Switchboard",
    Owner          = "Robert Dewilder",
    Purpose = "CLOUDOPS" }

  )
}

module "orch-switchboard-prod-elb-ff1-logs" {
  #checkov:skip=CKV_AWS_145: Ensure that S3 buckets are encrypted with KMS by default
  #checkov:skip=CKV_AWS_21: Ensure all data stored in the S3 bucket have versioning enabled
  #checkov:skip=CKV_AWS_19: Ensure all data stored in the S3 bucket is securely encrypted at rest
  #checkov:skip=CKV_AWS_300: Ensure S3 lifecycle configuration sets period for aborting failed uploads
  source  = "terraform-aws-modules/s3-bucket/aws"
  version = "~> 3.11.0"
  bucket  = "orch-switchboard-prod-elb-ff1-logs"
  versioning = {
    enabled = false
  }
  providers = {
    aws = aws.eu-central-1
  }
  server_side_encryption_configuration = var.server_side_encryption_configuration
  logging = {
    target_bucket = "orch-switchboard-prod-s3-euc1-logs"
    target_prefix = "orch-switchboard-prod/"
  }
  object_ownership                      = "BucketOwnerEnforced"
  block_public_acls                     = var.block_public_acls
  ignore_public_acls                    = var.ignore_public_acls
  restrict_public_buckets               = var.restrict_public_buckets
  block_public_policy                   = var.block_public_policy
  force_destroy                         = var.force_destroy
  attach_policy                         = var.attach_policy
  policy                                = data.aws_iam_policy_document.orch-switchboard-prod-elb-ff1-logs.json
  attach_deny_insecure_transport_policy = var.attach_deny_insecure_transport_policy
  attach_require_latest_tls_policy      = var.attach_require_latest_tls_policy
  tags = merge(var.tags,
    {
      Name           = "orch-switchboard-prod-elb-ff1-logs",
      Environment    = "Prod",
      Terraform      = "True",
      Business-Unit  = "Digital-Supply-Chain",
      Classification = "internal-use-only",
      Project-Name   = "Switchboard",
      Project-Code   = "Switchboard",
      Owner          = "Robert Dewilder",
      Purpose        = "LOGGING"

    }

  )
}

module "orch-switchboard-prod-elb-use1-logs" {
  #checkov:skip=CKV_AWS_145: Ensure that S3 buckets are encrypted with KMS by default
  #checkov:skip=CKV_AWS_21: Ensure all data stored in the S3 bucket have versioning enabled
  #checkov:skip=CKV_AWS_19: Ensure all data stored in the S3 bucket is securely encrypted at rest
  #checkov:skip=CKV_AWS_300: Ensure S3 lifecycle configuration sets period for aborting failed uploads
  source  = "terraform-aws-modules/s3-bucket/aws"
  version = "~> 3.11.0"
  bucket  = "orch-switchboard-prod-elb-use1-logs"
  versioning = {
    enabled = false
  }

  server_side_encryption_configuration = var.server_side_encryption_configuration
  logging = {
    target_bucket = "prod-switchboard-logs"
    target_prefix = "orch-switchboard-prod/"
  }
  object_ownership                      = "BucketOwnerEnforced"
  block_public_acls                     = var.block_public_acls
  ignore_public_acls                    = var.ignore_public_acls
  restrict_public_buckets               = var.restrict_public_buckets
  block_public_policy                   = var.block_public_policy
  force_destroy                         = var.force_destroy
  attach_policy                         = var.attach_policy
  policy                                = data.aws_iam_policy_document.orch-switchboard-prod-elb-use1-logs.json
  attach_deny_insecure_transport_policy = var.attach_deny_insecure_transport_policy
  attach_require_latest_tls_policy      = var.attach_require_latest_tls_policy
  tags = merge(var.tags,

    {
      Name           = "orch-switchboard-prod-elb-use1-logs",
      Environment    = "Prod",
      Terraform      = "True",
      Business-Unit  = "Digital-Supply-Chain",
      Classification = "internal-use-only",
      Project-Name   = "Switchboard",
      Project-Code   = "Switchboard",
      Owner          = "Robert Dewilder",
      Purpose        = "CLOUDOPS"
  })
}

module "orch-switchboard-prod-p2-vpc-flowlogs" {
  #checkov:skip=CKV_AWS_145: Ensure that S3 buckets are encrypted with KMS by default
  #checkov:skip=CKV_AWS_21: Ensure all data stored in the S3 bucket have versioning enabled
  #checkov:skip=CKV_AWS_19: Ensure all data stored in the S3 bucket is securely encrypted at rest
  #checkov:skip=CKV_AWS_300: Ensure S3 lifecycle configuration sets period for aborting failed uploads
  source  = "terraform-aws-modules/s3-bucket/aws"
  version = "~> 3.11.0"
  bucket  = "orch-switchboard-prod-p2-vpc-flowlogs"
  versioning = {
    enabled = false
  }
  providers = {
    aws = aws.eu-central-1
  }
  server_side_encryption_configuration = var.server_side_encryption_configuration
  logging = {
    target_bucket = "orch-switchboard-prod-s3-euc1-logs"
    target_prefix = "orch-switchboard-prod/"
  }
  object_ownership                      = "BucketOwnerEnforced"
  block_public_acls                     = var.block_public_acls
  ignore_public_acls                    = var.ignore_public_acls
  restrict_public_buckets               = var.restrict_public_buckets
  block_public_policy                   = var.block_public_policy
  force_destroy                         = var.force_destroy
  attach_policy                         = var.attach_policy
  policy                                = data.aws_iam_policy_document.orch-switchboard-prod-p2-vpc-flowlogs.json
  attach_deny_insecure_transport_policy = var.attach_deny_insecure_transport_policy
  attach_require_latest_tls_policy      = var.attach_require_latest_tls_policy
  tags = merge(var.tags,
    {

      Name           = "orch-switchboard-prod-p2-vpc-flowlogs",
      Environment    = "Prod",
      Terraform      = "True",
      Business-Unit  = "Digital-Supply-Chain",
      Classification = "internal-use-only",
      Project-Name   = "Switchboard",
      Project-Code   = "Switchboard",
      Owner          = "Robert Dewilder",
      Purpose        = "CLOUDOPS"

  })
}

module "orch-switchboard-prod-s3-euc1-logs" {
  #checkov:skip=CKV_AWS_145: Ensure that S3 buckets are encrypted with KMS by default
  #checkov:skip=CKV_AWS_21: Ensure all data stored in the S3 bucket have versioning enabled
  #checkov:skip=CKV_AWS_19: Ensure all data stored in the S3 bucket is securely encrypted at rest
  #checkov:skip=CKV_AWS_300: Ensure S3 lifecycle configuration sets period for aborting failed uploads
  source  = "terraform-aws-modules/s3-bucket/aws"
  version = "~> 3.11.0"
  bucket  = "orch-switchboard-prod-s3-euc1-logs"
  versioning = {
    enabled = true
  }
  providers = {
    aws = aws.eu-central-1
  }
  server_side_encryption_configuration = var.server_side_encryption_configuration

  object_ownership                      = "BucketOwnerEnforced"
  block_public_acls                     = var.block_public_acls
  ignore_public_acls                    = var.ignore_public_acls
  restrict_public_buckets               = var.restrict_public_buckets
  block_public_policy                   = var.block_public_policy
  force_destroy                         = var.force_destroy
  attach_policy                         = var.attach_policy
  policy                                = data.aws_iam_policy_document.orch-switchboard-prod-s3-euc1-logs.json
  attach_deny_insecure_transport_policy = var.attach_deny_insecure_transport_policy
  attach_require_latest_tls_policy      = var.attach_require_latest_tls_policy
  tags = merge(var.tags,

    {

      Name           = "orch-switchboard-prod-s3-euc1-logs",
      Environment    = "Prod",
      Terraform      = "True",
      Business-Unit  = "Digital-Supply-Chain",
      Classification = "internal-use-only",
      Project-Name   = "Switchboard",
      Project-Code   = "Switchboard",
      Owner          = "Robert Dewilder",
      Purpose        = "CLOUDOPS"

  })
}

module "orch-switchboard-prod-s3-use1-logs" {
  #checkov:skip=CKV_AWS_145: Ensure that S3 buckets are encrypted with KMS by default
  #checkov:skip=CKV_AWS_21: Ensure all data stored in the S3 bucket have versioning enabled
  #checkov:skip=CKV_AWS_19: Ensure all data stored in the S3 bucket is securely encrypted at rest
  #checkov:skip=CKV_AWS_300: Ensure S3 lifecycle configuration sets period for aborting failed uploads
  source  = "terraform-aws-modules/s3-bucket/aws"
  version = "~> 3.11.0"
  bucket  = "orch-switchboard-prod-s3-use1-logs"
  versioning = {
    enabled = true
  }

  server_side_encryption_configuration = var.server_side_encryption_configuration

  object_ownership                      = "BucketOwnerEnforced"
  block_public_acls                     = var.block_public_acls
  ignore_public_acls                    = var.ignore_public_acls
  restrict_public_buckets               = var.restrict_public_buckets
  block_public_policy                   = var.block_public_policy
  force_destroy                         = var.force_destroy
  attach_policy                         = var.attach_policy
  policy                                = data.aws_iam_policy_document.orch-switchboard-prod-s3-use1-logs.json
  attach_deny_insecure_transport_policy = var.attach_deny_insecure_transport_policy
  attach_require_latest_tls_policy      = var.attach_require_latest_tls_policy
  tags = merge(var.tags,
    {
      Name           = "orch-switchboard-prod-s3-use1-logs",
      Environment    = "Prod",
      Terraform      = "True",
      Business-Unit  = "Digital-Supply-Chain",
      Classification = "internal-use-only",
      Project-Name   = "Switchboard",
      Project-Code   = "Switchboard",
      Owner          = "Robert Dewilder",
      Purpose        = "LOGGING"
  })
}

module "orch-switchboard-prod-ssm-out" {
  #checkov:skip=CKV_AWS_145: Ensure that S3 buckets are encrypted with KMS by default
  #checkov:skip=CKV_AWS_21: Ensure all data stored in the S3 bucket have versioning enabled
  #checkov:skip=CKV_AWS_19: Ensure all data stored in the S3 bucket is securely encrypted at rest
  #checkov:skip=CKV_AWS_300: Ensure S3 lifecycle configuration sets period for aborting failed uploads
  source  = "terraform-aws-modules/s3-bucket/aws"
  version = "~> 3.11.0"
  bucket  = "orch-switchboard-prod-ssm-out"
  versioning = {
    enabled = false
  }

  server_side_encryption_configuration = var.server_side_encryption_configuration
  logging = {
    target_bucket = "prod-switchboard-logs"
    target_prefix = "orch-switchboard-prod/"
  }
  object_ownership                      = "BucketOwnerEnforced"
  block_public_acls                     = var.block_public_acls
  ignore_public_acls                    = var.ignore_public_acls
  restrict_public_buckets               = var.restrict_public_buckets
  block_public_policy                   = var.block_public_policy
  force_destroy                         = var.force_destroy
  attach_policy                         = var.attach_policy
  policy                                = data.aws_iam_policy_document.orch-switchboard-prod-ssm-out.json
  attach_deny_insecure_transport_policy = var.attach_deny_insecure_transport_policy
  attach_require_latest_tls_policy      = var.attach_require_latest_tls_policy
  tags = merge(var.tags,
    {
      Name           = "orch-switchboard-prod-ssm-out",
      Environment    = "Prod",
      Terraform      = "True",
      Business-Unit  = "Digital-Supply-Chain",
      Classification = "internal-use-only",
      Project-Name   = "Switchboard",
      Project-Code   = "Switchboard",
      Owner          = "Robert Dewilder",
      Purpose        = "CLOUDOPS"

  })
}

module "orch-switchboard-prod-use1-s3-inventory" {
  #checkov:skip=CKV_AWS_145: Ensure that S3 buckets are encrypted with KMS by default
  #checkov:skip=CKV_AWS_21: Ensure all data stored in the S3 bucket have versioning enabled
  #checkov:skip=CKV_AWS_19: Ensure all data stored in the S3 bucket is securely encrypted at rest
  #checkov:skip=CKV_AWS_300: Ensure S3 lifecycle configuration sets period for aborting failed uploads
  source  = "terraform-aws-modules/s3-bucket/aws"
  version = "~> 3.11.0"
  bucket  = "orch-switchboard-prod-use1-s3-inventory"
  versioning = {
    enabled = false
  }

  server_side_encryption_configuration = var.server_side_encryption_configuration
  logging = {
    target_bucket = "prod-switchboard-logs"
    target_prefix = "orch-switchboard-prod/"
  }
  object_ownership                      = "BucketOwnerEnforced"
  block_public_acls                     = var.block_public_acls
  ignore_public_acls                    = var.ignore_public_acls
  restrict_public_buckets               = var.restrict_public_buckets
  block_public_policy                   = var.block_public_policy
  force_destroy                         = var.force_destroy
  attach_policy                         = var.attach_policy
  policy                                = data.aws_iam_policy_document.orch-switchboard-prod-use1-s3-inventory.json
  attach_deny_insecure_transport_policy = var.attach_deny_insecure_transport_policy
  attach_require_latest_tls_policy      = var.attach_require_latest_tls_policy
  tags = merge(var.tags,

    {
      Name           = "orch-switchboard-prod-use1-s3-inventory",
      Environment    = "Prod",
      Terraform      = "True",
      Business-Unit  = "Digital-Supply-Chain",
      Classification = "internal-use-only",
      Project-Name   = "Switchboard",
      Project-Code   = "Switchboard",
      Owner          = "Robert Dewilder",
      Purpose        = "CLOUDOPS"
  })
}

module "orch-switchboard-prod-vpc-flowlogs" {
  #checkov:skip=CKV_AWS_145: Ensure that S3 buckets are encrypted with KMS by default
  #checkov:skip=CKV_AWS_21: Ensure all data stored in the S3 bucket have versioning enabled
  #checkov:skip=CKV_AWS_19: Ensure all data stored in the S3 bucket is securely encrypted at rest
  #checkov:skip=CKV_AWS_300: Ensure S3 lifecycle configuration sets period for aborting failed uploads
  source  = "terraform-aws-modules/s3-bucket/aws"
  version = "~> 3.11.0"
  bucket  = "orch-switchboard-prod-vpc-flowlogs"
  versioning = {
    enabled = false
  }

  server_side_encryption_configuration = var.server_side_encryption_configuration
  logging = {
    target_bucket = "prod-switchboard-logs"
    target_prefix = "orch-switchboard-prod/"
  }
  object_ownership                      = "BucketOwnerEnforced"
  block_public_acls                     = var.block_public_acls
  ignore_public_acls                    = var.ignore_public_acls
  restrict_public_buckets               = var.restrict_public_buckets
  block_public_policy                   = var.block_public_policy
  force_destroy                         = var.force_destroy
  attach_policy                         = var.attach_policy
  policy                                = data.aws_iam_policy_document.orch-switchboard-prod-vpc-flowlogs.json
  attach_deny_insecure_transport_policy = var.attach_deny_insecure_transport_policy
  attach_require_latest_tls_policy      = var.attach_require_latest_tls_policy
  tags = merge(var.tags,
    {

      Name           = "orch-switchboard-prod-vpc-flowlogs",
      Environment    = "Prod",
      Terraform      = "True",
      Business-Unit  = "Digital-Supply-Chain",
      Classification = "internal-use-only",
      Project-Name   = "Switchboard",
      Project-Code   = "Switchboard",
      Owner          = "Robert Dewilder",
      Purpose        = "CLOUDOPS"

  })
}

module "prod-smej-switchboard-endpoint" {
  #checkov:skip=CKV_AWS_145: Ensure that S3 buckets are encrypted with KMS by default
  #checkov:skip=CKV_AWS_21: Ensure all data stored in the S3 bucket have versioning enabled
  #checkov:skip=CKV_AWS_19: Ensure all data stored in the S3 bucket is securely encrypted at rest
  #checkov:skip=CKV_AWS_300: Ensure S3 lifecycle configuration sets period for aborting failed uploads
  source  = "terraform-aws-modules/s3-bucket/aws"
  version = "~> 3.11.0"
  bucket  = "prod-smej-switchboard-endpoint"
  versioning = {
    enabled = false
  }

  server_side_encryption_configuration = var.server_side_encryption_configuration
  logging = {
    target_bucket = "prod-switchboard-logs"
    target_prefix = "orch-switchboard-prod/"
  }
  object_ownership                      = "BucketOwnerEnforced"
  block_public_acls                     = var.block_public_acls
  ignore_public_acls                    = var.ignore_public_acls
  restrict_public_buckets               = var.restrict_public_buckets
  block_public_policy                   = var.block_public_policy
  force_destroy                         = var.force_destroy
  attach_policy                         = var.attach_policy
  policy                                = data.aws_iam_policy_document.prod-smej-switchboard-endpoint.json
  attach_deny_insecure_transport_policy = var.attach_deny_insecure_transport_policy
  attach_require_latest_tls_policy      = var.attach_require_latest_tls_policy
  tags = merge(var.tags,
    {
      Name           = "prod-smej-switchboard-endpoint",
      Environment    = "Prod",
      Terraform      = "True",
      Business-Unit  = "Digital-Supply-Chain",
      Classification = "internal-use-only",
      Project-Name   = "Switchboard",
      Project-Code   = "Switchboard",
      Owner          = "Robert Dewilder",
      Purpose        = "APP-SUPPORT"

  })
}

module "prod-switchboard-fm-frontend" {
  #checkov:skip=CKV_AWS_145: Ensure that S3 buckets are encrypted with KMS by default
  #checkov:skip=CKV_AWS_21: Ensure all data stored in the S3 bucket have versioning enabled
  #checkov:skip=CKV_AWS_19: Ensure all data stored in the S3 bucket is securely encrypted at rest
  #checkov:skip=CKV_AWS_300: Ensure S3 lifecycle configuration sets period for aborting failed uploads
  source  = "terraform-aws-modules/s3-bucket/aws"
  version = "~> 3.11.0"
  bucket  = "prod-switchboard-fm-frontend"
  versioning = {
    enabled = false
  }

  server_side_encryption_configuration = var.server_side_encryption_configuration
  logging = {
    target_bucket = "prod-switchboard-logs"
    target_prefix = "orch-switchboard-prod/"
  }
  object_ownership                      = "BucketOwnerEnforced"
  block_public_acls                     = var.block_public_acls
  ignore_public_acls                    = var.ignore_public_acls
  restrict_public_buckets               = var.restrict_public_buckets
  block_public_policy                   = var.block_public_policy
  force_destroy                         = var.force_destroy
  attach_policy                         = var.attach_policy
  policy                                = data.aws_iam_policy_document.prod-switchboard-fm-frontend.json
  attach_deny_insecure_transport_policy = var.attach_deny_insecure_transport_policy
  attach_require_latest_tls_policy      = var.attach_require_latest_tls_policy
  tags = merge(var.tags,
    {

      Name           = "prod-switchboard-fm-frontend",
      Environment    = "Prod",
      Terraform      = "True",
      Business-Unit  = "Digital-Supply-Chain",
      Classification = "internal-use-only",
      Project-Name   = "Switchboard",
      Project-Code   = "Switchboard",
      Owner          = "Robert Dewilder",
      Purpose        = "APP-SUPPORT"

  })
}

module "prod-switchboard-logs" {
  #checkov:skip=CKV_AWS_145: Ensure that S3 buckets are encrypted with KMS by default
  #checkov:skip=CKV_AWS_21: Ensure all data stored in the S3 bucket have versioning enabled
  #checkov:skip=CKV_AWS_19: Ensure all data stored in the S3 bucket is securely encrypted at rest
  #checkov:skip=CKV_AWS_300: Ensure S3 lifecycle configuration sets period for aborting failed uploads
  source  = "terraform-aws-modules/s3-bucket/aws"
  version = "~> 3.11.0"
  bucket  = "prod-switchboard-logs"
  versioning = {
    enabled = true
  }

  server_side_encryption_configuration = var.server_side_encryption_configuration
  logging = {
    target_bucket = "orch-switchboard-prod-s3-use1-logs"
    target_prefix = "prod-switchboard-logs/"
  }
  object_ownership                      = "BucketOwnerEnforced"
  block_public_acls                     = var.block_public_acls
  ignore_public_acls                    = var.ignore_public_acls
  restrict_public_buckets               = var.restrict_public_buckets
  block_public_policy                   = var.block_public_policy
  force_destroy                         = var.force_destroy
  attach_policy                         = var.attach_policy
  policy                                = data.aws_iam_policy_document.prod-switchboard-logs.json
  attach_deny_insecure_transport_policy = var.attach_deny_insecure_transport_policy
  attach_require_latest_tls_policy      = var.attach_require_latest_tls_policy
  tags = merge(var.tags,
    {
      Name           = "prod-switchboard-logs",
      Environment    = "Prod",
      Terraform      = "True",
      Business-Unit  = "Digital-Supply-Chain",
      Classification = "internal-use-only",
      Project-Name   = "Switchboard",
      Project-Code   = "Switchboard",
      Owner          = "Robert Dewilder",
      Purpose        = "APP-SUPPORT"

  })
}

module "sme-orch-ddex" {
  #checkov:skip=CKV_AWS_145: Ensure that S3 buckets are encrypted with KMS by default
  #checkov:skip=CKV_AWS_21: Ensure all data stored in the S3 bucket have versioning enabled
  #checkov:skip=CKV_AWS_19: Ensure all data stored in the S3 bucket is securely encrypted at rest
  #checkov:skip=CKV_AWS_300: Ensure S3 lifecycle configuration sets period for aborting failed uploads
  source  = "terraform-aws-modules/s3-bucket/aws"
  version = "~> 3.11.0"
  bucket  = "sme-orch-ddex"
  versioning = {
    enabled = false
  }

  server_side_encryption_configuration = var.server_side_encryption_configuration
  logging = {
    target_bucket = "prod-switchboard-logs"
    target_prefix = "orch-switchboard-prod/"
  }
  object_ownership                      = "BucketOwnerEnforced"
  block_public_acls                     = var.block_public_acls
  ignore_public_acls                    = var.ignore_public_acls
  restrict_public_buckets               = var.restrict_public_buckets
  block_public_policy                   = var.block_public_policy
  force_destroy                         = var.force_destroy
  attach_policy                         = var.attach_policy
  policy                                = data.aws_iam_policy_document.sme-orch-ddex.json
  attach_deny_insecure_transport_policy = var.attach_deny_insecure_transport_policy
  attach_require_latest_tls_policy      = var.attach_require_latest_tls_policy
  tags = merge(var.tags,

    {
      Name           = "sme-orch-ddex",
      Environment    = "Prod",
      Terraform      = "True",
      Business-Unit  = "Digital-Supply-Chain",
      Classification = "internal-use-only",
      Project-Name   = "Switchboard",
      Project-Code   = "Switchboard",
      Owner          = "Robert Dewilder",
      Purpose        = "APP-SUPPORT"
  })
}

module "orch-switchboard-prod-terraform-state" {
  #checkov:skip=CKV_AWS_145: Ensure that S3 buckets are encrypted with KMS by default
  #checkov:skip=CKV_AWS_21: Ensure all data stored in the S3 bucket have versioning enabled
  #checkov:skip=CKV_AWS_19: Ensure all data stored in the S3 bucket is securely encrypted at rest
  #checkov:skip=CKV_AWS_300: Ensure S3 lifecycle configuration sets period for aborting failed uploads
  source  = "terraform-aws-modules/s3-bucket/aws"
  version = "~> 3.11.0"
  bucket  = "prod-orch-switchboard-terraform-state"
  versioning = {
    enabled = true
  }

  server_side_encryption_configuration  = var.server_side_encryption_configuration
  object_ownership                      = "BucketOwnerEnforced"
  object_lock_enabled                   = false
  block_public_acls                     = var.block_public_acls
  ignore_public_acls                    = var.ignore_public_acls
  restrict_public_buckets               = var.restrict_public_buckets
  block_public_policy                   = var.block_public_policy
  force_destroy                         = false
  attach_policy                         = false
  attach_deny_insecure_transport_policy = var.attach_deny_insecure_transport_policy
  attach_require_latest_tls_policy      = var.attach_require_latest_tls_policy
  tags                                  = merge(var.tags, { Name = "prod-orch-switchboard-terraform-state" }, { Classification = "internal-use-only" }, { Purpose = "CLOUDOPS" })
}

