diff --git a/README.md b/README.md index 918fd410..58b3cc1d 100644 --- a/README.md +++ b/README.md @@ -156,13 +156,13 @@ Users of Terragrunt can achieve similar results by using modules provided in the | Name | Version | |------|---------| | [terraform](#requirement\_terraform) | >= 1.5.7 | -| [aws](#requirement\_aws) | >= 6.28 | +| [aws](#requirement\_aws) | >= 6.37 | ## Providers | Name | Version | |------|---------| -| [aws](#provider\_aws) | >= 6.28 | +| [aws](#provider\_aws) | >= 6.37 | ## Modules @@ -244,6 +244,7 @@ No modules. | [block\_public\_acls](#input\_block\_public\_acls) | Whether Amazon S3 should block public ACLs for this bucket. | `bool` | `true` | no | | [block\_public\_policy](#input\_block\_public\_policy) | Whether Amazon S3 should block public bucket policies for this bucket. | `bool` | `true` | no | | [bucket](#input\_bucket) | (Optional, Forces new resource) The name of the bucket. If omitted, Terraform will assign a random, unique name. | `string` | `null` | no | +| [bucket\_namespace](#input\_bucket\_namespace) | Namespace for the bucket. Determines bucket naming scope. Valid values: account-regional, global. Defaults to global (AWS) | `string` | `null` | no | | [bucket\_prefix](#input\_bucket\_prefix) | (Optional, Forces new resource) Creates a unique bucket name beginning with the specified prefix. Conflicts with bucket. | `string` | `null` | no | | [control\_object\_ownership](#input\_control\_object\_ownership) | Whether to manage S3 Bucket Ownership Controls on this bucket. | `bool` | `false` | no | | [cors\_rule](#input\_cors\_rule) | List of maps containing rules for Cross-Origin Resource Sharing. | `any` | `[]` | no | diff --git a/examples/account-public-access/README.md b/examples/account-public-access/README.md index 0e4d338a..2e9bf56b 100644 --- a/examples/account-public-access/README.md +++ b/examples/account-public-access/README.md @@ -20,7 +20,7 @@ Note that this example may create resources which cost money. Run `terraform des | Name | Version | |------|---------| | [terraform](#requirement\_terraform) | >= 1.10 | -| [aws](#requirement\_aws) | >= 6.28 | +| [aws](#requirement\_aws) | >= 6.37 | | [random](#requirement\_random) | >= 2.0 | ## Providers diff --git a/examples/account-public-access/versions.tf b/examples/account-public-access/versions.tf index 4dc043d3..55db82ef 100644 --- a/examples/account-public-access/versions.tf +++ b/examples/account-public-access/versions.tf @@ -4,7 +4,7 @@ terraform { required_providers { aws = { source = "hashicorp/aws" - version = ">= 6.28" + version = ">= 6.37" } random = { source = "hashicorp/random" diff --git a/examples/complete/README.md b/examples/complete/README.md index 2f04246e..bf89725e 100644 --- a/examples/complete/README.md +++ b/examples/complete/README.md @@ -30,14 +30,14 @@ Note that this example may create resources which cost money. Run `terraform des | Name | Version | |------|---------| | [terraform](#requirement\_terraform) | >= 1.5.7 | -| [aws](#requirement\_aws) | >= 6.28 | +| [aws](#requirement\_aws) | >= 6.37 | | [random](#requirement\_random) | >= 2.0 | ## Providers | Name | Version | |------|---------| -| [aws](#provider\_aws) | >= 6.28 | +| [aws](#provider\_aws) | >= 6.37 | | [random](#provider\_random) | >= 2.0 | ## Modules @@ -48,6 +48,7 @@ Note that this example may create resources which cost money. Run `terraform des | [disabled](#module\_disabled) | ../../ | n/a | | [log\_bucket](#module\_log\_bucket) | ../../ | n/a | | [s3\_bucket](#module\_s3\_bucket) | ../../ | n/a | +| [simple\_account\_regional\_bucket](#module\_simple\_account\_regional\_bucket) | ../../ | n/a | | [simple\_bucket](#module\_simple\_bucket) | ../../ | n/a | ## Resources @@ -61,6 +62,7 @@ Note that this example may create resources which cost money. Run `terraform des | [aws_canonical_user_id.current](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/canonical_user_id) | data source | | [aws_cloudfront_log_delivery_canonical_user_id.cloudfront](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/cloudfront_log_delivery_canonical_user_id) | data source | | [aws_iam_policy_document.bucket_policy](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/iam_policy_document) | data source | +| [aws_region.current](https://registry.terraform.io/providers/hashicorp/aws/latest/docs/data-sources/region) | data source | ## Inputs diff --git a/examples/complete/main.tf b/examples/complete/main.tf index 33eddbf4..003ef37f 100644 --- a/examples/complete/main.tf +++ b/examples/complete/main.tf @@ -18,6 +18,8 @@ data "aws_canonical_user_id" "current" {} data "aws_cloudfront_log_delivery_canonical_user_id" "cloudfront" {} +data "aws_region" "current" {} + resource "random_pet" "this" { length = 2 } @@ -138,6 +140,15 @@ module "simple_bucket" { force_destroy = true } +module "simple_account_regional_bucket" { + source = "../../" + + bucket = format("simple-%s-%s-an", data.aws_caller_identity.current.account_id, data.aws_region.current.name) + bucket_namespace = "account-regional" + + force_destroy = true +} + module "s3_bucket" { source = "../../" diff --git a/examples/complete/versions.tf b/examples/complete/versions.tf index c58a323e..acf0867a 100644 --- a/examples/complete/versions.tf +++ b/examples/complete/versions.tf @@ -4,7 +4,7 @@ terraform { required_providers { aws = { source = "hashicorp/aws" - version = ">= 6.28" + version = ">= 6.37" } random = { source = "hashicorp/random" diff --git a/examples/directory-bucket/README.md b/examples/directory-bucket/README.md index ad2a68dc..8b7d3064 100644 --- a/examples/directory-bucket/README.md +++ b/examples/directory-bucket/README.md @@ -20,14 +20,14 @@ Note that this example may create resources which cost money. Run `terraform des | Name | Version | |------|---------| | [terraform](#requirement\_terraform) | >= 1.5.7 | -| [aws](#requirement\_aws) | >= 6.28 | +| [aws](#requirement\_aws) | >= 6.37 | | [random](#requirement\_random) | >= 2.0 | ## Providers | Name | Version | |------|---------| -| [aws](#provider\_aws) | >= 6.28 | +| [aws](#provider\_aws) | >= 6.37 | | [random](#provider\_random) | >= 2.0 | ## Modules diff --git a/examples/directory-bucket/versions.tf b/examples/directory-bucket/versions.tf index c58a323e..acf0867a 100644 --- a/examples/directory-bucket/versions.tf +++ b/examples/directory-bucket/versions.tf @@ -4,7 +4,7 @@ terraform { required_providers { aws = { source = "hashicorp/aws" - version = ">= 6.28" + version = ">= 6.37" } random = { source = "hashicorp/random" diff --git a/examples/notification/README.md b/examples/notification/README.md index 8d046d3d..6b587ef1 100644 --- a/examples/notification/README.md +++ b/examples/notification/README.md @@ -20,7 +20,7 @@ Note that this example may create resources which cost money. Run `terraform des | Name | Version | |------|---------| | [terraform](#requirement\_terraform) | >= 1.5.7 | -| [aws](#requirement\_aws) | >= 6.28 | +| [aws](#requirement\_aws) | >= 6.37 | | [null](#requirement\_null) | >= 2.0 | | [random](#requirement\_random) | >= 2.0 | @@ -28,7 +28,7 @@ Note that this example may create resources which cost money. Run `terraform des | Name | Version | |------|---------| -| [aws](#provider\_aws) | >= 6.28 | +| [aws](#provider\_aws) | >= 6.37 | | [null](#provider\_null) | >= 2.0 | | [random](#provider\_random) | >= 2.0 | diff --git a/examples/notification/versions.tf b/examples/notification/versions.tf index 07469443..9d94e2fc 100644 --- a/examples/notification/versions.tf +++ b/examples/notification/versions.tf @@ -4,7 +4,7 @@ terraform { required_providers { aws = { source = "hashicorp/aws" - version = ">= 6.28" + version = ">= 6.37" } random = { source = "hashicorp/random" diff --git a/examples/object/README.md b/examples/object/README.md index 34ed1d6b..9432e874 100644 --- a/examples/object/README.md +++ b/examples/object/README.md @@ -20,14 +20,14 @@ Note that this example may create resources which cost money. Run `terraform des | Name | Version | |------|---------| | [terraform](#requirement\_terraform) | >= 1.5.7 | -| [aws](#requirement\_aws) | >= 6.28 | +| [aws](#requirement\_aws) | >= 6.37 | | [random](#requirement\_random) | >= 2.0 | ## Providers | Name | Version | |------|---------| -| [aws](#provider\_aws) | >= 6.28 | +| [aws](#provider\_aws) | >= 6.37 | | [random](#provider\_random) | >= 2.0 | ## Modules diff --git a/examples/object/versions.tf b/examples/object/versions.tf index c58a323e..acf0867a 100644 --- a/examples/object/versions.tf +++ b/examples/object/versions.tf @@ -4,7 +4,7 @@ terraform { required_providers { aws = { source = "hashicorp/aws" - version = ">= 6.28" + version = ">= 6.37" } random = { source = "hashicorp/random" diff --git a/examples/s3-analytics/README.md b/examples/s3-analytics/README.md index 6fa2dca3..e2405a6f 100644 --- a/examples/s3-analytics/README.md +++ b/examples/s3-analytics/README.md @@ -10,14 +10,14 @@ Please check [complete example](https://github.com/terraform-aws-modules/terrafo | Name | Version | |------|---------| | [terraform](#requirement\_terraform) | >= 1.5.7 | -| [aws](#requirement\_aws) | >= 6.28 | +| [aws](#requirement\_aws) | >= 6.37 | | [random](#requirement\_random) | >= 2.0 | ## Providers | Name | Version | |------|---------| -| [aws](#provider\_aws) | >= 6.28 | +| [aws](#provider\_aws) | >= 6.37 | | [random](#provider\_random) | >= 2.0 | ## Modules diff --git a/examples/s3-analytics/versions.tf b/examples/s3-analytics/versions.tf index c58a323e..acf0867a 100644 --- a/examples/s3-analytics/versions.tf +++ b/examples/s3-analytics/versions.tf @@ -4,7 +4,7 @@ terraform { required_providers { aws = { source = "hashicorp/aws" - version = ">= 6.28" + version = ">= 6.37" } random = { source = "hashicorp/random" diff --git a/examples/s3-inventory/README.md b/examples/s3-inventory/README.md index 61698083..4db65e7f 100644 --- a/examples/s3-inventory/README.md +++ b/examples/s3-inventory/README.md @@ -10,14 +10,14 @@ Please check [complete example](https://github.com/terraform-aws-modules/terrafo | Name | Version | |------|---------| | [terraform](#requirement\_terraform) | >= 1.5.7 | -| [aws](#requirement\_aws) | >= 6.28 | +| [aws](#requirement\_aws) | >= 6.37 | | [random](#requirement\_random) | >= 2.0 | ## Providers | Name | Version | |------|---------| -| [aws](#provider\_aws) | >= 6.28 | +| [aws](#provider\_aws) | >= 6.37 | | [random](#provider\_random) | >= 2.0 | ## Modules diff --git a/examples/s3-inventory/versions.tf b/examples/s3-inventory/versions.tf index c58a323e..acf0867a 100644 --- a/examples/s3-inventory/versions.tf +++ b/examples/s3-inventory/versions.tf @@ -4,7 +4,7 @@ terraform { required_providers { aws = { source = "hashicorp/aws" - version = ">= 6.28" + version = ">= 6.37" } random = { source = "hashicorp/random" diff --git a/examples/s3-replication/README.md b/examples/s3-replication/README.md index e92aa1c1..0f63c78d 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) | >= 1.5.7 | -| [aws](#requirement\_aws) | >= 6.28 | +| [aws](#requirement\_aws) | >= 6.37 | | [random](#requirement\_random) | >= 2.0 | ## Providers | Name | Version | |------|---------| -| [aws](#provider\_aws) | >= 6.28 | -| [aws.replica](#provider\_aws.replica) | >= 6.28 | +| [aws](#provider\_aws) | >= 6.37 | +| [aws.replica](#provider\_aws.replica) | >= 6.37 | | [random](#provider\_random) | >= 2.0 | ## Modules diff --git a/examples/s3-replication/versions.tf b/examples/s3-replication/versions.tf index c58a323e..acf0867a 100644 --- a/examples/s3-replication/versions.tf +++ b/examples/s3-replication/versions.tf @@ -4,7 +4,7 @@ terraform { required_providers { aws = { source = "hashicorp/aws" - version = ">= 6.28" + version = ">= 6.37" } random = { source = "hashicorp/random" diff --git a/examples/table-bucket/README.md b/examples/table-bucket/README.md index 1c779a88..1f17ee6f 100644 --- a/examples/table-bucket/README.md +++ b/examples/table-bucket/README.md @@ -20,14 +20,14 @@ Note that this example may create resources which cost money. Run `terraform des | Name | Version | |------|---------| | [terraform](#requirement\_terraform) | >= 1.5.7 | -| [aws](#requirement\_aws) | >= 6.28 | +| [aws](#requirement\_aws) | >= 6.37 | | [random](#requirement\_random) | >= 2.0 | ## Providers | Name | Version | |------|---------| -| [aws](#provider\_aws) | >= 6.28 | +| [aws](#provider\_aws) | >= 6.37 | | [random](#provider\_random) | >= 2.0 | ## Modules diff --git a/examples/table-bucket/versions.tf b/examples/table-bucket/versions.tf index c58a323e..acf0867a 100644 --- a/examples/table-bucket/versions.tf +++ b/examples/table-bucket/versions.tf @@ -4,7 +4,7 @@ terraform { required_providers { aws = { source = "hashicorp/aws" - version = ">= 6.28" + version = ">= 6.37" } random = { source = "hashicorp/random" diff --git a/main.tf b/main.tf index f824047f..b0b512d9 100644 --- a/main.tf +++ b/main.tf @@ -47,8 +47,9 @@ resource "aws_s3_bucket" "this" { region = var.region - bucket = var.bucket - bucket_prefix = var.bucket_prefix + bucket = var.bucket + bucket_prefix = var.bucket_prefix + bucket_namespace = var.bucket_namespace force_destroy = var.force_destroy object_lock_enabled = var.object_lock_enabled diff --git a/modules/account-public-access/README.md b/modules/account-public-access/README.md index 40979da7..413f18ff 100644 --- a/modules/account-public-access/README.md +++ b/modules/account-public-access/README.md @@ -12,13 +12,13 @@ Each AWS account may only have one S3 Public Access Block configuration. | Name | Version | |------|---------| | [terraform](#requirement\_terraform) | >= 1.5.7 | -| [aws](#requirement\_aws) | >= 6.28 | +| [aws](#requirement\_aws) | >= 6.37 | ## Providers | Name | Version | |------|---------| -| [aws](#provider\_aws) | >= 6.28 | +| [aws](#provider\_aws) | >= 6.37 | ## Modules diff --git a/modules/account-public-access/versions.tf b/modules/account-public-access/versions.tf index 0f74c6cb..cb7333c1 100644 --- a/modules/account-public-access/versions.tf +++ b/modules/account-public-access/versions.tf @@ -4,7 +4,7 @@ terraform { required_providers { aws = { source = "hashicorp/aws" - version = ">= 6.28" + version = ">= 6.37" } } diff --git a/modules/notification/README.md b/modules/notification/README.md index a968a044..cefc2d99 100644 --- a/modules/notification/README.md +++ b/modules/notification/README.md @@ -8,13 +8,13 @@ Creates S3 bucket notification resource with all supported types of deliveries: | Name | Version | |------|---------| | [terraform](#requirement\_terraform) | >= 1.5.7 | -| [aws](#requirement\_aws) | >= 6.28 | +| [aws](#requirement\_aws) | >= 6.37 | ## Providers | Name | Version | |------|---------| -| [aws](#provider\_aws) | >= 6.28 | +| [aws](#provider\_aws) | >= 6.37 | ## Modules diff --git a/modules/notification/versions.tf b/modules/notification/versions.tf index 0f74c6cb..cb7333c1 100644 --- a/modules/notification/versions.tf +++ b/modules/notification/versions.tf @@ -4,7 +4,7 @@ terraform { required_providers { aws = { source = "hashicorp/aws" - version = ">= 6.28" + version = ">= 6.37" } } diff --git a/modules/object/README.md b/modules/object/README.md index 5a1a3cc3..e6c601c4 100644 --- a/modules/object/README.md +++ b/modules/object/README.md @@ -8,13 +8,13 @@ Creates S3 bucket objects with different configurations. | Name | Version | |------|---------| | [terraform](#requirement\_terraform) | >= 1.5.7 | -| [aws](#requirement\_aws) | >= 6.28 | +| [aws](#requirement\_aws) | >= 6.37 | ## Providers | Name | Version | |------|---------| -| [aws](#provider\_aws) | >= 6.28 | +| [aws](#provider\_aws) | >= 6.37 | ## Modules diff --git a/modules/object/versions.tf b/modules/object/versions.tf index 0f74c6cb..cb7333c1 100644 --- a/modules/object/versions.tf +++ b/modules/object/versions.tf @@ -4,7 +4,7 @@ terraform { required_providers { aws = { source = "hashicorp/aws" - version = ">= 6.28" + version = ">= 6.37" } } diff --git a/modules/table-bucket/README.md b/modules/table-bucket/README.md index 7ed0e8bb..1fcfe998 100644 --- a/modules/table-bucket/README.md +++ b/modules/table-bucket/README.md @@ -8,13 +8,13 @@ Creates S3 Table Bucket and Tables with various configurations. | Name | Version | |------|---------| | [terraform](#requirement\_terraform) | >= 1.5.7 | -| [aws](#requirement\_aws) | >= 6.28 | +| [aws](#requirement\_aws) | >= 6.37 | ## Providers | Name | Version | |------|---------| -| [aws](#provider\_aws) | >= 6.28 | +| [aws](#provider\_aws) | >= 6.37 | ## Modules diff --git a/modules/table-bucket/versions.tf b/modules/table-bucket/versions.tf index 0f74c6cb..cb7333c1 100644 --- a/modules/table-bucket/versions.tf +++ b/modules/table-bucket/versions.tf @@ -4,7 +4,7 @@ terraform { required_providers { aws = { source = "hashicorp/aws" - version = ">= 6.28" + version = ">= 6.37" } } diff --git a/variables.tf b/variables.tf index 63f45bef..e5973882 100644 --- a/variables.tf +++ b/variables.tf @@ -118,6 +118,12 @@ variable "bucket_prefix" { default = null } +variable "bucket_namespace" { + description = "Namespace for the bucket. Determines bucket naming scope. Valid values: account-regional, global. Defaults to global (AWS)" + type = string + default = null +} + variable "acl" { description = "(Optional) The canned ACL to apply. Conflicts with `grant`" type = string diff --git a/versions.tf b/versions.tf index 0f74c6cb..cb7333c1 100644 --- a/versions.tf +++ b/versions.tf @@ -4,7 +4,7 @@ terraform { required_providers { aws = { source = "hashicorp/aws" - version = ">= 6.28" + version = ">= 6.37" } } diff --git a/wrappers/account-public-access/versions.tf b/wrappers/account-public-access/versions.tf index 0f74c6cb..cb7333c1 100644 --- a/wrappers/account-public-access/versions.tf +++ b/wrappers/account-public-access/versions.tf @@ -4,7 +4,7 @@ terraform { required_providers { aws = { source = "hashicorp/aws" - version = ">= 6.28" + version = ">= 6.37" } } diff --git a/wrappers/main.tf b/wrappers/main.tf index 6e388ac2..6dadfc17 100644 --- a/wrappers/main.tf +++ b/wrappers/main.tf @@ -32,6 +32,7 @@ module "wrapper" { block_public_acls = try(each.value.block_public_acls, var.defaults.block_public_acls, true) block_public_policy = try(each.value.block_public_policy, var.defaults.block_public_policy, true) bucket = try(each.value.bucket, var.defaults.bucket, null) + bucket_namespace = try(each.value.bucket_namespace, var.defaults.bucket_namespace, null) bucket_prefix = try(each.value.bucket_prefix, var.defaults.bucket_prefix, null) control_object_ownership = try(each.value.control_object_ownership, var.defaults.control_object_ownership, false) cors_rule = try(each.value.cors_rule, var.defaults.cors_rule, []) diff --git a/wrappers/notification/versions.tf b/wrappers/notification/versions.tf index 0f74c6cb..cb7333c1 100644 --- a/wrappers/notification/versions.tf +++ b/wrappers/notification/versions.tf @@ -4,7 +4,7 @@ terraform { required_providers { aws = { source = "hashicorp/aws" - version = ">= 6.28" + version = ">= 6.37" } } diff --git a/wrappers/object/versions.tf b/wrappers/object/versions.tf index 0f74c6cb..cb7333c1 100644 --- a/wrappers/object/versions.tf +++ b/wrappers/object/versions.tf @@ -4,7 +4,7 @@ terraform { required_providers { aws = { source = "hashicorp/aws" - version = ">= 6.28" + version = ">= 6.37" } } diff --git a/wrappers/table-bucket/versions.tf b/wrappers/table-bucket/versions.tf index 0f74c6cb..cb7333c1 100644 --- a/wrappers/table-bucket/versions.tf +++ b/wrappers/table-bucket/versions.tf @@ -4,7 +4,7 @@ terraform { required_providers { aws = { source = "hashicorp/aws" - version = ">= 6.28" + version = ">= 6.37" } } diff --git a/wrappers/versions.tf b/wrappers/versions.tf index 0f74c6cb..cb7333c1 100644 --- a/wrappers/versions.tf +++ b/wrappers/versions.tf @@ -4,7 +4,7 @@ terraform { required_providers { aws = { source = "hashicorp/aws" - version = ">= 6.28" + version = ">= 6.37" } }