diff --git a/infrastructure/terraform/modules/s3_presignable_bucket/main.tf b/infrastructure/terraform/modules/s3_presignable_bucket/main.tf index 7f0364cf..67a71922 100644 --- a/infrastructure/terraform/modules/s3_presignable_bucket/main.tf +++ b/infrastructure/terraform/modules/s3_presignable_bucket/main.tf @@ -74,6 +74,14 @@ resource "aws_iam_user_policy" "presign_frontend_user_policy" { EOF } +resource "aws_s3_bucket_versioning" "versioning" { + count = var.enable_versioning ? 1 : 0 + bucket = aws_s3_bucket.bucket.id + versioning_configuration { + status = "Enabled" + } +} + resource "aws_s3_bucket_public_access_block" "block_public" { bucket = aws_s3_bucket.bucket.id block_public_acls = true diff --git a/infrastructure/terraform/modules/s3_presignable_bucket/variables.tf b/infrastructure/terraform/modules/s3_presignable_bucket/variables.tf index f50a0935..bac29c94 100644 --- a/infrastructure/terraform/modules/s3_presignable_bucket/variables.tf +++ b/infrastructure/terraform/modules/s3_presignable_bucket/variables.tf @@ -15,4 +15,10 @@ variable "allowed_origins" { variable "bucketname" { description = "The name of the bucket to create" type = string +} + +variable "enable_versioning" { + description = "Enable S3 versioning on the bucket" + type = bool + default = false } \ No newline at end of file diff --git a/infrastructure/terraform/shared/main.tf b/infrastructure/terraform/shared/main.tf index 98b08e7d..34fbfe75 100644 --- a/infrastructure/terraform/shared/main.tf +++ b/infrastructure/terraform/shared/main.tf @@ -268,10 +268,11 @@ output "retrofit_heat_baseline_predictions_bucket_name" { // We make this bucket presignable, because we want to generate download links for the frontend module "retrofit_energy_assessments" { - source = "../modules/s3_presignable_bucket" - bucketname = "retrofit-energy-assessments-${var.stage}" - allowed_origins = var.allowed_origins - environment = var.stage + source = "../modules/s3_presignable_bucket" + bucketname = "retrofit-energy-assessments-${var.stage}" + allowed_origins = var.allowed_origins + environment = var.stage + enable_versioning = true } output "retrofit_energy_assessments_bucket_name" { @@ -279,6 +280,7 @@ output "retrofit_energy_assessments_bucket_name" { description = "Name of the retrofit energy assessments bucket" } + # Set up the route53 record for the API module "route53" { source = "../modules/route53"