# Copyright Amazon.com, Inc. or its affiliates. All rights reserved. # SPDX-License-Identifier: Apache-2.0 # data "aws_caller_identity" "current" { provider = aws.primary_region } # S3 Resources #tfsec:ignore:aws-s3-enable-bucket-logging resource "aws_s3_bucket" "primary-backend-bucket" { provider = aws.primary_region bucket = "aft-backend-${data.aws_caller_identity.current.account_id}-primary-region" tags = { "Name" = "aft-backend-${data.aws_caller_identity.current.account_id}-primary-region" } } #tfsec:ignore:aws-s3-enable-bucket-logging resource "aws_s3_bucket" "secondary-backend-bucket" { count = var.secondary_region == "" ? 0 : 1 provider = aws.secondary_region bucket = "aft-backend-${data.aws_caller_identity.current.account_id}-secondary-region" tags = { "Name" = "aft-backend-${data.aws_caller_identity.current.account_id}-secondary-region" } } resource "aws_s3_bucket_replication_configuration" "primary-backend-bucket-replication" { count = var.secondary_region == "" ? 0 : 1 provider = aws.primary_region bucket = aws_s3_bucket.primary-backend-bucket.id role = aws_iam_role.replication[0].arn rule { id = "0" priority = "0" status = "Enabled" source_selection_criteria { sse_kms_encrypted_objects { status = "Enabled" } } destination { bucket = aws_s3_bucket.secondary-backend-bucket[0].arn storage_class = "STANDARD" encryption_configuration { replica_kms_key_id = aws_kms_key.encrypt-secondary-region[0].arn } } } } resource "aws_s3_bucket_versioning" "primary-backend-bucket-versioning" { provider = aws.primary_region bucket = aws_s3_bucket.primary-backend-bucket.id versioning_configuration { status = "Enabled" } } resource "aws_s3_bucket_server_side_encryption_configuration" "primary-backend-bucket-encryption" { provider = aws.primary_region bucket = aws_s3_bucket.primary-backend-bucket.id rule { apply_server_side_encryption_by_default { kms_master_key_id = aws_kms_key.encrypt-primary-region.arn sse_algorithm = "aws:kms" } } } resource "aws_s3_bucket_public_access_block" "primary-backend-bucket" { provider = aws.primary_region bucket = aws_s3_bucket.primary-backend-bucket.id block_public_acls = true block_public_policy = true ignore_public_acls = true restrict_public_buckets = true } resource "aws_s3_bucket_versioning" "secondary-backend-bucket-versioning" { count = var.secondary_region == "" ? 0 : 1 provider = aws.secondary_region bucket = aws_s3_bucket.secondary-backend-bucket[0].id versioning_configuration { status = "Enabled" } } resource "aws_s3_bucket_server_side_encryption_configuration" "secondary-backend-bucket-encryption" { count = var.secondary_region == "" ? 0 : 1 provider = aws.secondary_region bucket = aws_s3_bucket.secondary-backend-bucket[0].id rule { apply_server_side_encryption_by_default { kms_master_key_id = aws_kms_key.encrypt-secondary-region[0].arn sse_algorithm = "aws:kms" } } } resource "aws_s3_bucket_public_access_block" "secondary-backend-bucket" { count = var.secondary_region == "" ? 0 : 1 provider = aws.secondary_region bucket = aws_s3_bucket.secondary-backend-bucket[0].id block_public_acls = true block_public_policy = true ignore_public_acls = true restrict_public_buckets = true } resource "aws_iam_role" "replication" { count = var.secondary_region == "" ? 0 : 1 provider = aws.primary_region name = "aft-s3-terraform-backend-replication" assume_role_policy = <