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" {