From fa1defc0143f0c44ab3eb2b3e0172b51dd2a898e Mon Sep 17 00:00:00 2001 From: schniber <75125134+schniber@users.noreply.github.com> Date: Sun, 7 Nov 2021 12:20:34 +0100 Subject: [PATCH] feat: Added Replication Time Control for Bucket Replication (#114) --- .pre-commit-config.yaml | 8 ++++---- README.md | 4 ++-- examples/s3-replication/README.md | 6 +++--- examples/s3-replication/main.tf | 10 +++++++++- examples/s3-replication/versions.tf | 2 +- main.tf | 18 ++++++++++++++++++ versions.tf | 2 +- wrappers/README.md | 2 +- wrappers/main.tf | 2 ++ wrappers/notification/README.md | 4 ++-- wrappers/object/README.md | 4 ++-- 11 files changed, 45 insertions(+), 17 deletions(-) diff --git a/.pre-commit-config.yaml b/.pre-commit-config.yaml index 72134f74..ccb6ded9 100644 --- a/.pre-commit-config.yaml +++ b/.pre-commit-config.yaml @@ -16,8 +16,8 @@ repos: # entry: /Users/Bob/Sites/terraform-aws-modules/scripts/generate-terraform-wrappers.sh --module-dir modules/notification --overwrite # language: system # pass_filenames: false - - repo: git://github.com/antonbabenko/pre-commit-terraform - rev: v1.50.0 + - repo: https://github.com/antonbabenko/pre-commit-terraform + rev: v1.55.0 hooks: - id: terraform_fmt - id: terraform_validate @@ -37,7 +37,7 @@ repos: - '--args=--only=terraform_required_providers' - '--args=--only=terraform_standard_module_structure' - '--args=--only=terraform_workspace_remote' - - repo: git://github.com/pre-commit/pre-commit-hooks - rev: v3.4.0 + - repo: https://github.com/pre-commit/pre-commit-hooks + rev: v4.0.1 hooks: - id: check-merge-conflict diff --git a/README.md b/README.md index 33a0b795..4ee9e43b 100644 --- a/README.md +++ b/README.md @@ -108,13 +108,13 @@ inputs = { | Name | Version | |------|---------| | [terraform](#requirement\_terraform) | >= 0.13.1 | -| [aws](#requirement\_aws) | >= 3.50 | +| [aws](#requirement\_aws) | >= 3.64 | ## Providers | Name | Version | |------|---------| -| [aws](#provider\_aws) | >= 3.50 | +| [aws](#provider\_aws) | >= 3.64 | ## Modules diff --git a/examples/s3-replication/README.md b/examples/s3-replication/README.md index c33d06c4..947b64d5 100644 --- a/examples/s3-replication/README.md +++ b/examples/s3-replication/README.md @@ -22,15 +22,15 @@ Note that this example may create resources which cost money. Run `terraform des | Name | Version | |------|---------| | [terraform](#requirement\_terraform) | >= 0.13.1 | -| [aws](#requirement\_aws) | >= 3.50 | +| [aws](#requirement\_aws) | >= 3.64 | | [random](#requirement\_random) | >= 2.0 | ## Providers | Name | Version | |------|---------| -| [aws](#provider\_aws) | >= 3.50 | -| [aws.replica](#provider\_aws.replica) | >= 3.50 | +| [aws](#provider\_aws) | >= 3.64 | +| [aws.replica](#provider\_aws.replica) | >= 3.64 | | [random](#provider\_random) | >= 2.0 | ## Modules diff --git a/examples/s3-replication/main.tf b/examples/s3-replication/main.tf index 8f3504f6..af3f0c1c 100644 --- a/examples/s3-replication/main.tf +++ b/examples/s3-replication/main.tf @@ -83,6 +83,14 @@ module "s3_bucket" { access_control_translation = { owner = "Destination" } + replication_time = { + status = "Enabled" + minutes = 15 + } + metrics = { + status = "Enabled" + minutes = 15 + } } }, { @@ -128,4 +136,4 @@ module "s3_bucket" { ] } -} +} \ No newline at end of file diff --git a/examples/s3-replication/versions.tf b/examples/s3-replication/versions.tf index b23248e5..02e822e7 100644 --- a/examples/s3-replication/versions.tf +++ b/examples/s3-replication/versions.tf @@ -2,7 +2,7 @@ terraform { required_version = ">= 0.13.1" required_providers { - aws = ">= 3.50" + aws = ">= 3.64" random = ">= 2.0" } } diff --git a/main.tf b/main.tf index c42492b1..f0e1b759 100644 --- a/main.tf +++ b/main.tf @@ -154,6 +154,24 @@ resource "aws_s3_bucket" "this" { owner = access_control_translation.value.owner } } + + dynamic "replication_time" { + for_each = length(keys(lookup(destination.value, "replication_time", {}))) == 0 ? [] : [lookup(destination.value, "replication_time", {})] + + content { + status = replication_time.value.status + minutes = replication_time.value.minutes + } + } + + dynamic "metrics" { + for_each = length(keys(lookup(destination.value, "metrics", {}))) == 0 ? [] : [lookup(destination.value, "metrics", {})] + + content { + status = metrics.value.status + minutes = metrics.value.minutes + } + } } } diff --git a/versions.tf b/versions.tf index 526a1723..0114ccae 100644 --- a/versions.tf +++ b/versions.tf @@ -2,6 +2,6 @@ terraform { required_version = ">= 0.13.1" required_providers { - aws = ">= 3.50" + aws = ">= 3.64" } } diff --git a/wrappers/README.md b/wrappers/README.md index cae2d976..d0e1c4b2 100644 --- a/wrappers/README.md +++ b/wrappers/README.md @@ -28,7 +28,7 @@ inputs = { } ``` -## Usage with Terraform: +## Usage with Terraform ```hcl module "wrapper" { diff --git a/wrappers/main.tf b/wrappers/main.tf index 6bb5af34..44d17e2e 100644 --- a/wrappers/main.tf +++ b/wrappers/main.tf @@ -30,4 +30,6 @@ module "wrapper" { block_public_policy = lookup(each.value, "block_public_policy", false) ignore_public_acls = lookup(each.value, "ignore_public_acls", false) restrict_public_buckets = lookup(each.value, "restrict_public_buckets", false) + control_object_ownership = lookup(each.value, "control_object_ownership", false) + object_ownership = lookup(each.value, "object_ownership", "ObjectWriter") } diff --git a/wrappers/notification/README.md b/wrappers/notification/README.md index ddaa68db..cf3e1cad 100644 --- a/wrappers/notification/README.md +++ b/wrappers/notification/README.md @@ -6,7 +6,7 @@ You may want to use a single Terragrunt configuration file to manage multiple re This wrapper does not implement any extra functionality. -# Usage with Terragrunt +## Usage with Terragrunt `terragrunt.hcl`: @@ -28,7 +28,7 @@ inputs = { } ``` -## Usage with Terraform: +## Usage with Terraform ```hcl module "wrapper" { diff --git a/wrappers/object/README.md b/wrappers/object/README.md index 780fc651..b852ec15 100644 --- a/wrappers/object/README.md +++ b/wrappers/object/README.md @@ -6,7 +6,7 @@ You may want to use a single Terragrunt configuration file to manage multiple re This wrapper does not implement any extra functionality. -# Usage with Terragrunt +## Usage with Terragrunt `terragrunt.hcl`: @@ -28,7 +28,7 @@ inputs = { } ``` -## Usage with Terraform: +## Usage with Terraform ```hcl module "wrapper" {