diff --git a/README.md b/README.md index b7b7a17..66a6cf1 100644 --- a/README.md +++ b/README.md @@ -255,13 +255,13 @@ Terraform documentation is generated automatically using [pre-commit hooks](http | Name | Version | |------|---------| | [terraform](#requirement\_terraform) | >= 1.0 | -| [aws](#requirement\_aws) | >= 5.89 | +| [aws](#requirement\_aws) | >= 6.0 | ## Providers | Name | Version | |------|---------| -| [aws](#provider\_aws) | >= 5.89 | +| [aws](#provider\_aws) | >= 6.0 | ## Modules @@ -412,6 +412,7 @@ No modules. | [preferred\_maintenance\_window](#input\_preferred\_maintenance\_window) | The weekly time range during which system maintenance can occur, in (UTC) | `string` | `"sun:05:00-sun:06:00"` | no | | [publicly\_accessible](#input\_publicly\_accessible) | Determines whether instances are publicly accessible. Default `false` | `bool` | `null` | no | | [putin\_khuylo](#input\_putin\_khuylo) | Do you agree that Putin doesn't respect Ukrainian sovereignty and territorial integrity? More info: https://en.wikipedia.org/wiki/Putin_khuylo! | `bool` | `true` | no | +| [region](#input\_region) | Region where the resource(s) will be managed. Defaults to the region set in the provider configuration | `string` | `null` | no | | [replication\_source\_identifier](#input\_replication\_source\_identifier) | ARN of a source DB cluster or DB instance if this DB cluster is to be created as a Read Replica | `string` | `null` | no | | [restore\_to\_point\_in\_time](#input\_restore\_to\_point\_in\_time) | Map of nested attributes for cloning Aurora cluster | `map(string)` | `{}` | no | | [s3\_import](#input\_s3\_import) | Configuration map used to restore from a Percona Xtrabackup in S3 (only MySQL is supported) | `map(string)` | `{}` | no | diff --git a/examples/autoscaling/README.md b/examples/autoscaling/README.md index c40b4e5..4882d34 100644 --- a/examples/autoscaling/README.md +++ b/examples/autoscaling/README.md @@ -20,13 +20,13 @@ Note that this example may create resources which cost money. Run `terraform des | Name | Version | |------|---------| | [terraform](#requirement\_terraform) | >= 1.0 | -| [aws](#requirement\_aws) | >= 5.89 | +| [aws](#requirement\_aws) | >= 6.0 | ## Providers | Name | Version | |------|---------| -| [aws](#provider\_aws) | >= 5.89 | +| [aws](#provider\_aws) | >= 6.0 | ## Modules diff --git a/examples/autoscaling/versions.tf b/examples/autoscaling/versions.tf index c00acf7..aaf26b8 100644 --- a/examples/autoscaling/versions.tf +++ b/examples/autoscaling/versions.tf @@ -4,7 +4,7 @@ terraform { required_providers { aws = { source = "hashicorp/aws" - version = ">= 5.89" + version = ">= 6.0" } } } diff --git a/examples/dsql/README.md b/examples/dsql/README.md index e381540..a77295d 100644 --- a/examples/dsql/README.md +++ b/examples/dsql/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.0 | -| [aws](#requirement\_aws) | >= 5.100 | +| [aws](#requirement\_aws) | >= 6.0 | ## Providers diff --git a/examples/dsql/versions.tf b/examples/dsql/versions.tf index 7aad8ab..aaf26b8 100644 --- a/examples/dsql/versions.tf +++ b/examples/dsql/versions.tf @@ -4,7 +4,7 @@ terraform { required_providers { aws = { source = "hashicorp/aws" - version = ">= 5.100" + version = ">= 6.0" } } } diff --git a/examples/global-cluster/README.md b/examples/global-cluster/README.md index af76781..0720695 100644 --- a/examples/global-cluster/README.md +++ b/examples/global-cluster/README.md @@ -20,15 +20,15 @@ Note that this example may create resources which cost money. Run `terraform des | Name | Version | |------|---------| | [terraform](#requirement\_terraform) | >= 1.0 | -| [aws](#requirement\_aws) | >= 5.89 | +| [aws](#requirement\_aws) | >= 6.0 | | [random](#requirement\_random) | >= 2.2 | ## Providers | Name | Version | |------|---------| -| [aws](#provider\_aws) | >= 5.89 | -| [aws.secondary](#provider\_aws.secondary) | >= 5.89 | +| [aws](#provider\_aws) | >= 6.0 | +| [aws.secondary](#provider\_aws.secondary) | >= 6.0 | | [random](#provider\_random) | >= 2.2 | ## Modules diff --git a/examples/global-cluster/versions.tf b/examples/global-cluster/versions.tf index 157cc31..f1cdeaa 100644 --- a/examples/global-cluster/versions.tf +++ b/examples/global-cluster/versions.tf @@ -4,7 +4,7 @@ terraform { required_providers { aws = { source = "hashicorp/aws" - version = ">= 5.89" + version = ">= 6.0" } random = { diff --git a/examples/limitless/README.md b/examples/limitless/README.md index efbf8c2..f1095e2 100644 --- a/examples/limitless/README.md +++ b/examples/limitless/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.0 | -| [aws](#requirement\_aws) | >= 5.89 | +| [aws](#requirement\_aws) | >= 6.0 | | [random](#requirement\_random) | >= 3.5 | ## Providers | Name | Version | |------|---------| -| [aws](#provider\_aws) | >= 5.89 | +| [aws](#provider\_aws) | >= 6.0 | | [random](#provider\_random) | >= 3.5 | ## Modules diff --git a/examples/limitless/versions.tf b/examples/limitless/versions.tf index 2832cf7..198c044 100644 --- a/examples/limitless/versions.tf +++ b/examples/limitless/versions.tf @@ -4,7 +4,7 @@ terraform { required_providers { aws = { source = "hashicorp/aws" - version = ">= 5.89" + version = ">= 6.0" } random = { source = "hashicorp/random" diff --git a/examples/multi-az/README.md b/examples/multi-az/README.md index d97a1a8..9b5c091 100644 --- a/examples/multi-az/README.md +++ b/examples/multi-az/README.md @@ -20,13 +20,13 @@ Note that this example may create resources which cost money. Run `terraform des | Name | Version | |------|---------| | [terraform](#requirement\_terraform) | >= 1.0 | -| [aws](#requirement\_aws) | >= 5.89 | +| [aws](#requirement\_aws) | >= 6.0 | ## Providers | Name | Version | |------|---------| -| [aws](#provider\_aws) | >= 5.89 | +| [aws](#provider\_aws) | >= 6.0 | ## Modules diff --git a/examples/multi-az/versions.tf b/examples/multi-az/versions.tf index c00acf7..aaf26b8 100644 --- a/examples/multi-az/versions.tf +++ b/examples/multi-az/versions.tf @@ -4,7 +4,7 @@ terraform { required_providers { aws = { source = "hashicorp/aws" - version = ">= 5.89" + version = ">= 6.0" } } } diff --git a/examples/mysql/README.md b/examples/mysql/README.md index ec4fcab..896ffc7 100644 --- a/examples/mysql/README.md +++ b/examples/mysql/README.md @@ -20,13 +20,13 @@ Note that this example may create resources which cost money. Run `terraform des | Name | Version | |------|---------| | [terraform](#requirement\_terraform) | >= 1.0 | -| [aws](#requirement\_aws) | >= 5.89 | +| [aws](#requirement\_aws) | >= 6.0 | ## Providers | Name | Version | |------|---------| -| [aws](#provider\_aws) | >= 5.89 | +| [aws](#provider\_aws) | >= 6.0 | ## Modules diff --git a/examples/mysql/versions.tf b/examples/mysql/versions.tf index c00acf7..aaf26b8 100644 --- a/examples/mysql/versions.tf +++ b/examples/mysql/versions.tf @@ -4,7 +4,7 @@ terraform { required_providers { aws = { source = "hashicorp/aws" - version = ">= 5.89" + version = ">= 6.0" } } } diff --git a/examples/postgresql/README.md b/examples/postgresql/README.md index 223fd64..0dc4e35 100644 --- a/examples/postgresql/README.md +++ b/examples/postgresql/README.md @@ -20,13 +20,13 @@ Note that this example may create resources which cost money. Run `terraform des | Name | Version | |------|---------| | [terraform](#requirement\_terraform) | >= 1.0 | -| [aws](#requirement\_aws) | >= 5.89 | +| [aws](#requirement\_aws) | >= 6.0 | ## Providers | Name | Version | |------|---------| -| [aws](#provider\_aws) | >= 5.89 | +| [aws](#provider\_aws) | >= 6.0 | ## Modules diff --git a/examples/postgresql/versions.tf b/examples/postgresql/versions.tf index c00acf7..aaf26b8 100644 --- a/examples/postgresql/versions.tf +++ b/examples/postgresql/versions.tf @@ -4,7 +4,7 @@ terraform { required_providers { aws = { source = "hashicorp/aws" - version = ">= 5.89" + version = ">= 6.0" } } } diff --git a/examples/s3-import/README.md b/examples/s3-import/README.md index e128f91..72aaeed 100644 --- a/examples/s3-import/README.md +++ b/examples/s3-import/README.md @@ -49,13 +49,13 @@ Note that this example may create resources which cost money. Run `terraform des | Name | Version | |------|---------| | [terraform](#requirement\_terraform) | >= 1.0 | -| [aws](#requirement\_aws) | >= 5.89 | +| [aws](#requirement\_aws) | >= 6.0 | ## Providers | Name | Version | |------|---------| -| [aws](#provider\_aws) | >= 5.89 | +| [aws](#provider\_aws) | >= 6.0 | ## Modules diff --git a/examples/s3-import/versions.tf b/examples/s3-import/versions.tf index c00acf7..aaf26b8 100644 --- a/examples/s3-import/versions.tf +++ b/examples/s3-import/versions.tf @@ -4,7 +4,7 @@ terraform { required_providers { aws = { source = "hashicorp/aws" - version = ">= 5.89" + version = ">= 6.0" } } } diff --git a/examples/serverless/README.md b/examples/serverless/README.md index 42eb54c..a0efad1 100644 --- a/examples/serverless/README.md +++ b/examples/serverless/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.0 | -| [aws](#requirement\_aws) | >= 5.89 | +| [aws](#requirement\_aws) | >= 6.0 | | [random](#requirement\_random) | >= 3.5 | ## Providers | Name | Version | |------|---------| -| [aws](#provider\_aws) | >= 5.89 | +| [aws](#provider\_aws) | >= 6.0 | | [random](#provider\_random) | >= 3.5 | ## Modules diff --git a/examples/serverless/versions.tf b/examples/serverless/versions.tf index 2832cf7..198c044 100644 --- a/examples/serverless/versions.tf +++ b/examples/serverless/versions.tf @@ -4,7 +4,7 @@ terraform { required_providers { aws = { source = "hashicorp/aws" - version = ">= 5.89" + version = ">= 6.0" } random = { source = "hashicorp/random" diff --git a/main.tf b/main.tf index 4f56970..4a4b889 100644 --- a/main.tf +++ b/main.tf @@ -25,6 +25,8 @@ locals { resource "aws_db_subnet_group" "this" { count = local.create && var.create_db_subnet_group ? 1 : 0 + region = var.region + name = local.internal_db_subnet_group_name description = "For Aurora cluster ${var.name}" subnet_ids = var.subnets @@ -39,6 +41,8 @@ resource "aws_db_subnet_group" "this" { resource "aws_rds_cluster" "this" { count = local.create ? 1 : 0 + region = var.region + allocated_storage = var.allocated_storage allow_major_version_upgrade = var.allow_major_version_upgrade apply_immediately = var.apply_immediately @@ -172,6 +176,8 @@ resource "aws_rds_cluster" "this" { resource "aws_rds_cluster_instance" "this" { for_each = { for k, v in var.instances : k => v if local.create && !local.is_serverless } + region = var.region + apply_immediately = try(each.value.apply_immediately, var.apply_immediately) auto_minor_version_upgrade = try(each.value.auto_minor_version_upgrade, var.auto_minor_version_upgrade) availability_zone = try(each.value.availability_zone, null) @@ -215,6 +221,8 @@ resource "aws_rds_cluster_instance" "this" { resource "aws_rds_cluster_endpoint" "this" { for_each = { for k, v in var.endpoints : k => v if local.create && !local.is_serverless } + region = var.region + cluster_endpoint_identifier = each.value.identifier cluster_identifier = aws_rds_cluster.this[0].id custom_endpoint_type = each.value.type @@ -234,6 +242,8 @@ resource "aws_rds_cluster_endpoint" "this" { resource "aws_rds_cluster_role_association" "this" { for_each = { for k, v in var.iam_roles : k => v if local.create } + region = var.region + db_cluster_identifier = aws_rds_cluster.this[0].id feature_name = each.value.feature_name role_arn = each.value.role_arn @@ -291,6 +301,8 @@ resource "aws_iam_role_policy_attachment" "rds_enhanced_monitoring" { resource "aws_appautoscaling_target" "this" { count = local.create && var.autoscaling_enabled && !local.is_serverless ? 1 : 0 + region = var.region + max_capacity = var.autoscaling_max_capacity min_capacity = var.autoscaling_min_capacity resource_id = "cluster:${aws_rds_cluster.this[0].cluster_identifier}" @@ -309,6 +321,8 @@ resource "aws_appautoscaling_target" "this" { resource "aws_appautoscaling_policy" "this" { count = local.create && var.autoscaling_enabled && !local.is_serverless ? 1 : 0 + region = var.region + name = var.autoscaling_policy_name policy_type = "TargetTrackingScaling" resource_id = "cluster:${aws_rds_cluster.this[0].cluster_identifier}" @@ -337,6 +351,8 @@ resource "aws_appautoscaling_policy" "this" { resource "aws_security_group" "this" { count = local.create && var.create_security_group ? 1 : 0 + region = var.region + name = var.security_group_use_name_prefix ? null : local.security_group_name name_prefix = var.security_group_use_name_prefix ? "${local.security_group_name}-" : null vpc_id = var.vpc_id @@ -352,6 +368,8 @@ resource "aws_security_group" "this" { resource "aws_security_group_rule" "this" { for_each = { for k, v in var.security_group_rules : k => v if local.create && var.create_security_group } + region = var.region + # required type = try(each.value.type, "ingress") from_port = try(each.value.from_port, local.port) @@ -375,6 +393,8 @@ resource "aws_security_group_rule" "this" { resource "aws_rds_cluster_parameter_group" "this" { count = local.create && var.create_db_cluster_parameter_group ? 1 : 0 + region = var.region + name = var.db_cluster_parameter_group_use_name_prefix ? null : local.cluster_parameter_group_name name_prefix = var.db_cluster_parameter_group_use_name_prefix ? "${local.cluster_parameter_group_name}-" : null description = var.db_cluster_parameter_group_description @@ -404,6 +424,8 @@ resource "aws_rds_cluster_parameter_group" "this" { resource "aws_db_parameter_group" "this" { count = local.create && var.create_db_parameter_group ? 1 : 0 + region = var.region + name = var.db_parameter_group_use_name_prefix ? null : local.db_parameter_group_name name_prefix = var.db_parameter_group_use_name_prefix ? "${local.db_parameter_group_name}-" : null description = var.db_parameter_group_description @@ -434,6 +456,8 @@ resource "aws_db_parameter_group" "this" { resource "aws_cloudwatch_log_group" "this" { for_each = toset([for log in var.enabled_cloudwatch_logs_exports : log if local.create && var.create_cloudwatch_log_group && !var.cluster_use_name_prefix]) + region = var.region + name = "/aws/rds/cluster/${var.name}/${each.value}" retention_in_days = var.cloudwatch_log_group_retention_in_days kms_key_id = var.cloudwatch_log_group_kms_key_id @@ -450,6 +474,8 @@ resource "aws_cloudwatch_log_group" "this" { resource "aws_rds_cluster_activity_stream" "this" { count = local.create && var.create_db_cluster_activity_stream ? 1 : 0 + region = var.region + resource_arn = aws_rds_cluster.this[0].arn mode = var.db_cluster_activity_stream_mode kms_key_id = var.db_cluster_activity_stream_kms_key_id @@ -471,6 +497,8 @@ resource "aws_rds_cluster_activity_stream" "this" { resource "aws_secretsmanager_secret_rotation" "this" { count = local.create && var.manage_master_user_password && var.manage_master_user_password_rotation ? 1 : 0 + region = var.region + secret_id = aws_rds_cluster.this[0].master_user_secret[0].secret_arn rotate_immediately = var.master_user_password_rotate_immediately @@ -488,6 +516,8 @@ resource "aws_secretsmanager_secret_rotation" "this" { resource "aws_rds_shard_group" "this" { count = local.create && var.create_shard_group ? 1 : 0 + region = var.region + compute_redundancy = var.compute_redundancy db_cluster_identifier = aws_rds_cluster.this[0].id db_shard_group_identifier = var.db_shard_group_identifier diff --git a/variables.tf b/variables.tf index 7a1dadc..6e88993 100644 --- a/variables.tf +++ b/variables.tf @@ -4,6 +4,12 @@ variable "create" { default = true } +variable "region" { + description = "Region where the resource(s) will be managed. Defaults to the region set in the provider configuration" + type = string + default = null +} + variable "name" { description = "Name used across resources created" type = string diff --git a/versions.tf b/versions.tf index c00acf7..aaf26b8 100644 --- a/versions.tf +++ b/versions.tf @@ -4,7 +4,7 @@ terraform { required_providers { aws = { source = "hashicorp/aws" - version = ">= 5.89" + version = ">= 6.0" } } }