diff --git a/.gitignore b/.gitignore index c1198c3..7537fe8 100644 --- a/.gitignore +++ b/.gitignore @@ -37,3 +37,4 @@ override.tf.json terraform.rc .DS_Store +.idea diff --git a/README.md b/README.md index 5dfb4c7..fc34aa3 100644 --- a/README.md +++ b/README.md @@ -365,7 +365,7 @@ Examples codified under the [`examples`](https://github.com/terraform-aws-module | Name | Version | |------|---------| -| [terraform](#requirement\_terraform) | >= 1.0 | +| [terraform](#requirement\_terraform) | >= 1.3 | | [aws](#requirement\_aws) | >= 5.93 | | [random](#requirement\_random) | >= 3.0 | @@ -452,7 +452,7 @@ No modules. | [security\_group\_ids](#input\_security\_group\_ids) | One or more VPC security groups associated with the cache cluster | `list(string)` | `[]` | no | | [security\_group\_name](#input\_security\_group\_name) | Name to use on security group created | `string` | `null` | no | | [security\_group\_names](#input\_security\_group\_names) | Names of one or more Amazon VPC security groups associated with this replication group | `list(string)` | `[]` | no | -| [security\_group\_rules](#input\_security\_group\_rules) | Security group ingress and egress rules to add to the security group created | `any` | `{}` | no | +| [security\_group\_rules](#input\_security\_group\_rules) | Security group ingress and egress rules to add to the security group created |
map(object({
type = optional(string, "ingress")
ip_protocol = optional(string, "tcp")
cidr_ipv4 = optional(string)
cidr_ipv6 = optional(string)
description = optional(string)
from_port = optional(number)
to_port = optional(number)
prefix_list_id = optional(string)
referenced_security_group_id = optional(string)
tags = optional(map(string), {})
}))
| `{}` | no | | [security\_group\_tags](#input\_security\_group\_tags) | A map of additional tags to add to the security group created | `map(string)` | `{}` | no | | [security\_group\_use\_name\_prefix](#input\_security\_group\_use\_name\_prefix) | Determines whether the security group name (`security_group_name`) is used as a prefix | `bool` | `true` | no | | [snapshot\_arns](#input\_snapshot\_arns) | (Redis only) Single-element string list containing an Amazon Resource Name (ARN) of a Redis RDB snapshot file stored in Amazon S3 | `list(string)` | `[]` | no | diff --git a/examples/memcached-cluster/README.md b/examples/memcached-cluster/README.md index 7c93f16..cc2dfae 100644 --- a/examples/memcached-cluster/README.md +++ b/examples/memcached-cluster/README.md @@ -19,7 +19,7 @@ Note that this example may create resources which will incur monetary charges on | Name | Version | |------|---------| -| [terraform](#requirement\_terraform) | >= 1.0 | +| [terraform](#requirement\_terraform) | >= 1.3 | | [aws](#requirement\_aws) | >= 5.73 | ## Providers diff --git a/examples/memcached-cluster/versions.tf b/examples/memcached-cluster/versions.tf index 0f48a6c..680bcec 100644 --- a/examples/memcached-cluster/versions.tf +++ b/examples/memcached-cluster/versions.tf @@ -1,5 +1,5 @@ terraform { - required_version = ">= 1.0" + required_version = ">= 1.3" required_providers { aws = { diff --git a/examples/redis-cluster-mode/README.md b/examples/redis-cluster-mode/README.md index 8453466..38fc434 100644 --- a/examples/redis-cluster-mode/README.md +++ b/examples/redis-cluster-mode/README.md @@ -21,7 +21,7 @@ Note that this example may create resources which will incur monetary charges on | Name | Version | |------|---------| -| [terraform](#requirement\_terraform) | >= 1.0 | +| [terraform](#requirement\_terraform) | >= 1.3 | | [aws](#requirement\_aws) | >= 5.73 | ## Providers diff --git a/examples/redis-cluster-mode/versions.tf b/examples/redis-cluster-mode/versions.tf index 0f48a6c..680bcec 100644 --- a/examples/redis-cluster-mode/versions.tf +++ b/examples/redis-cluster-mode/versions.tf @@ -1,5 +1,5 @@ terraform { - required_version = ">= 1.0" + required_version = ">= 1.3" required_providers { aws = { diff --git a/examples/redis-cluster/README.md b/examples/redis-cluster/README.md index 7afc24d..69749bb 100644 --- a/examples/redis-cluster/README.md +++ b/examples/redis-cluster/README.md @@ -19,7 +19,7 @@ Note that this example may create resources which will incur monetary charges on | Name | Version | |------|---------| -| [terraform](#requirement\_terraform) | >= 1.0 | +| [terraform](#requirement\_terraform) | >= 1.3 | | [aws](#requirement\_aws) | >= 5.73 | ## Providers diff --git a/examples/redis-cluster/versions.tf b/examples/redis-cluster/versions.tf index 0f48a6c..680bcec 100644 --- a/examples/redis-cluster/versions.tf +++ b/examples/redis-cluster/versions.tf @@ -1,5 +1,5 @@ terraform { - required_version = ">= 1.0" + required_version = ">= 1.3" required_providers { aws = { diff --git a/examples/redis-global-replication-group/README.md b/examples/redis-global-replication-group/README.md index a3b3c7a..92572a1 100644 --- a/examples/redis-global-replication-group/README.md +++ b/examples/redis-global-replication-group/README.md @@ -23,7 +23,7 @@ Note that this example may create resources which will incur monetary charges on | Name | Version | |------|---------| -| [terraform](#requirement\_terraform) | >= 1.0 | +| [terraform](#requirement\_terraform) | >= 1.3 | | [aws](#requirement\_aws) | >= 5.73 | ## Providers diff --git a/examples/redis-global-replication-group/versions.tf b/examples/redis-global-replication-group/versions.tf index 0f48a6c..680bcec 100644 --- a/examples/redis-global-replication-group/versions.tf +++ b/examples/redis-global-replication-group/versions.tf @@ -1,5 +1,5 @@ terraform { - required_version = ">= 1.0" + required_version = ">= 1.3" required_providers { aws = { diff --git a/examples/redis-replication-group-with-cluster-replica/README.md b/examples/redis-replication-group-with-cluster-replica/README.md index 48f8674..a5fb511 100644 --- a/examples/redis-replication-group-with-cluster-replica/README.md +++ b/examples/redis-replication-group-with-cluster-replica/README.md @@ -19,7 +19,7 @@ Note that this example may create resources which will incur monetary charges on | Name | Version | |------|---------| -| [terraform](#requirement\_terraform) | >= 1.0 | +| [terraform](#requirement\_terraform) | >= 1.3 | | [aws](#requirement\_aws) | >= 5.73 | ## Providers diff --git a/examples/redis-replication-group-with-cluster-replica/versions.tf b/examples/redis-replication-group-with-cluster-replica/versions.tf index 0f48a6c..680bcec 100644 --- a/examples/redis-replication-group-with-cluster-replica/versions.tf +++ b/examples/redis-replication-group-with-cluster-replica/versions.tf @@ -1,5 +1,5 @@ terraform { - required_version = ">= 1.0" + required_version = ">= 1.3" required_providers { aws = { diff --git a/examples/redis-replication-group/README.md b/examples/redis-replication-group/README.md index b873d2c..2348f77 100644 --- a/examples/redis-replication-group/README.md +++ b/examples/redis-replication-group/README.md @@ -19,7 +19,7 @@ Note that this example may create resources which will incur monetary charges on | Name | Version | |------|---------| -| [terraform](#requirement\_terraform) | >= 1.0 | +| [terraform](#requirement\_terraform) | >= 1.3 | | [aws](#requirement\_aws) | >= 5.73 | ## Providers diff --git a/examples/redis-replication-group/versions.tf b/examples/redis-replication-group/versions.tf index 0f48a6c..680bcec 100644 --- a/examples/redis-replication-group/versions.tf +++ b/examples/redis-replication-group/versions.tf @@ -1,5 +1,5 @@ terraform { - required_version = ">= 1.0" + required_version = ">= 1.3" required_providers { aws = { diff --git a/examples/serverless-cache/versions.tf b/examples/serverless-cache/versions.tf index 0f48a6c..680bcec 100644 --- a/examples/serverless-cache/versions.tf +++ b/examples/serverless-cache/versions.tf @@ -1,5 +1,5 @@ terraform { - required_version = ">= 1.0" + required_version = ">= 1.3" required_providers { aws = { diff --git a/examples/valkey-replication-group/README.md b/examples/valkey-replication-group/README.md index 6e6a98a..937b513 100644 --- a/examples/valkey-replication-group/README.md +++ b/examples/valkey-replication-group/README.md @@ -19,7 +19,7 @@ Note that this example may create resources which will incur monetary charges on | Name | Version | |------|---------| -| [terraform](#requirement\_terraform) | >= 1.0 | +| [terraform](#requirement\_terraform) | >= 1.3 | | [aws](#requirement\_aws) | >= 5.73 | ## Providers diff --git a/examples/valkey-replication-group/versions.tf b/examples/valkey-replication-group/versions.tf index 0f48a6c..680bcec 100644 --- a/examples/valkey-replication-group/versions.tf +++ b/examples/valkey-replication-group/versions.tf @@ -1,5 +1,5 @@ terraform { - required_version = ">= 1.0" + required_version = ">= 1.3" required_providers { aws = { diff --git a/main.tf b/main.tf index 2020140..3dfa329 100644 --- a/main.tf +++ b/main.tf @@ -322,35 +322,35 @@ resource "aws_vpc_security_group_ingress_rule" "this" { # Required security_group_id = aws_security_group.this[0].id - ip_protocol = try(each.value.ip_protocol, "tcp") + ip_protocol = each.value.ip_protocol # Optional - cidr_ipv4 = lookup(each.value, "cidr_ipv4", null) - cidr_ipv6 = lookup(each.value, "cidr_ipv6", null) + cidr_ipv4 = try(each.value.cidr_ipv4, null) + cidr_ipv6 = try(each.value.cidr_ipv6, null) description = try(each.value.description, null) from_port = try(each.value.from_port, local.port) - prefix_list_id = lookup(each.value, "prefix_list_id", null) - referenced_security_group_id = lookup(each.value, "referenced_security_group_id", null) == "self" ? aws_security_group.this[0].id : lookup(each.value, "referenced_security_group_id", null) + prefix_list_id = try(each.value.prefix_list_id, null) + referenced_security_group_id = try(each.value.referenced_security_group_id, null) to_port = try(each.value.to_port, local.port) tags = merge(local.tags, var.security_group_tags, try(each.value.tags, {})) } resource "aws_vpc_security_group_egress_rule" "this" { - for_each = { for k, v in var.security_group_rules : k => v if local.create_security_group && try(v.type, "ingress") == "egress" } + for_each = { for k, v in var.security_group_rules : k => v if local.create_security_group && v.type == "egress" } # Required security_group_id = aws_security_group.this[0].id ip_protocol = try(each.value.ip_protocol, "tcp") # Optional - cidr_ipv4 = lookup(each.value, "cidr_ipv4", null) - cidr_ipv6 = lookup(each.value, "cidr_ipv6", null) + cidr_ipv4 = try(each.value.cidr_ipv4, null) + cidr_ipv6 = try(each.value.cidr_ipv6, null) description = try(each.value.description, null) - from_port = try(each.value.from_port, null) - prefix_list_id = lookup(each.value, "prefix_list_id", null) - referenced_security_group_id = lookup(each.value, "referenced_security_group_id", null) == "self" ? aws_security_group.this[0].id : lookup(each.value, "referenced_security_group_id", null) - to_port = try(each.value.to_port, null) + from_port = try(each.value.from_port, local.port) + prefix_list_id = try(each.value.prefix_list_id, null) + referenced_security_group_id = try(each.value.referenced_security_group_id, null) + to_port = try(each.value.to_port, local.port) tags = merge(local.tags, var.security_group_tags, try(each.value.tags, {})) } diff --git a/variables.tf b/variables.tf index d157d04..830e616 100644 --- a/variables.tf +++ b/variables.tf @@ -425,8 +425,19 @@ variable "vpc_id" { variable "security_group_rules" { description = "Security group ingress and egress rules to add to the security group created" - type = any - default = {} + type = map(object({ + type = optional(string, "ingress") + ip_protocol = optional(string, "tcp") + cidr_ipv4 = optional(string) + cidr_ipv6 = optional(string) + description = optional(string) + from_port = optional(number) + to_port = optional(number) + prefix_list_id = optional(string) + referenced_security_group_id = optional(string) + tags = optional(map(string), {}) + })) + default = {} } variable "security_group_tags" { diff --git a/versions.tf b/versions.tf index 6dda813..66099d3 100644 --- a/versions.tf +++ b/versions.tf @@ -1,5 +1,5 @@ terraform { - required_version = ">= 1.0" + required_version = ">= 1.3" required_providers { aws = { diff --git a/wrappers/versions.tf b/wrappers/versions.tf index 6dda813..66099d3 100644 --- a/wrappers/versions.tf +++ b/wrappers/versions.tf @@ -1,5 +1,5 @@ terraform { - required_version = ">= 1.0" + required_version = ">= 1.3" required_providers { aws = {