Skip to content

Commit 2f90229

Browse files
authored
feat: Support aws_lb_listener_rule.transform, regex_values, and update docs (#422)
1 parent 62066ff commit 2f90229

File tree

16 files changed

+106
-25
lines changed

16 files changed

+106
-25
lines changed

README.md

Lines changed: 3 additions & 3 deletions
Large diffs are not rendered by default.

docs/UPGRADE-10.0.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ Please consult the `examples` directory for reference example configurations. If
1919
- Security group rules now use a default naming scheme of `<security-group-name>-<map-key>` unless a more specific rule name is provided.
2020
- `rule.actions.type` has been replaced with `rule.actions.<type>`. See before/after below for more details.
2121
- `query_string` supports a list of key:value pairs; type definition updated to support this (i.e. was `map(string)` and is now `list(map(string))`)
22+
- `aws_lb_listener.ssl_policy` now defaults to `ELBSecurityPolicy-TLS13-1-3-2021-06`
2223

2324
### Removed
2425

examples/complete-alb/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,15 +20,15 @@ Note that this example may create resources which cost money. Run `terraform des
2020
| Name | Version |
2121
|------|---------|
2222
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.5.7 |
23-
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 6.5 |
23+
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 6.19 |
2424
| <a name="requirement_null"></a> [null](#requirement\_null) | >= 2.0 |
2525
| <a name="requirement_random"></a> [random](#requirement\_random) | >= 3.6 |
2626

2727
## Providers
2828

2929
| Name | Version |
3030
|------|---------|
31-
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 6.5 |
31+
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 6.19 |
3232
| <a name="provider_null"></a> [null](#provider\_null) | >= 2.0 |
3333
| <a name="provider_random"></a> [random](#provider\_random) | >= 3.6 |
3434

examples/complete-alb/main.tf

Lines changed: 21 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ module "alb" {
9393
conditions = [{
9494
http_header = {
9595
http_header_name = "x-Gimme-Fixed-Response"
96-
values = ["yes", "please", "right now"]
96+
regex_values = ["^yes$", "^please$", "^right\\snow$"]
9797
}
9898
}]
9999
}
@@ -125,6 +125,26 @@ module "alb" {
125125
value = "true"
126126
}]
127127
}]
128+
129+
transform = {
130+
host-header-rewrite = {
131+
host_header_rewrite_config = {
132+
rewrite = {
133+
regex = "^mywebsite-(.+).com$"
134+
replace = "test.$1.myweb.com"
135+
}
136+
}
137+
}
138+
my_other_tranform = {
139+
type = "url-rewrite"
140+
url_rewrite_config = {
141+
rewrite = {
142+
regex = "^mywebsite-(.+).net"
143+
replace = "test.$1.myweb.net"
144+
}
145+
}
146+
}
147+
}
128148
}
129149

130150
ex-redirect = {

examples/complete-alb/versions.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ terraform {
44
required_providers {
55
aws = {
66
source = "hashicorp/aws"
7-
version = ">= 6.5"
7+
version = ">= 6.19"
88
}
99
null = {
1010
source = "hashicorp/null"

examples/complete-nlb/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,13 +20,13 @@ Note that this example may create resources which cost money. Run `terraform des
2020
| Name | Version |
2121
|------|---------|
2222
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.5.7 |
23-
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 6.5 |
23+
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 6.19 |
2424

2525
## Providers
2626

2727
| Name | Version |
2828
|------|---------|
29-
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 6.5 |
29+
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 6.19 |
3030

3131
## Modules
3232

examples/complete-nlb/versions.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ terraform {
44
required_providers {
55
aws = {
66
source = "hashicorp/aws"
7-
version = ">= 6.5"
7+
version = ">= 6.19"
88
}
99
}
1010
}

examples/mutual-auth-alb/README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,15 +21,15 @@ Note that this example may create resources which cost money. Run `terraform des
2121
| Name | Version |
2222
|------|---------|
2323
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.5.7 |
24-
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 6.5 |
24+
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 6.19 |
2525
| <a name="requirement_null"></a> [null](#requirement\_null) | >= 2.0 |
2626
| <a name="requirement_tls"></a> [tls](#requirement\_tls) | >= 4.0 |
2727

2828
## Providers
2929

3030
| Name | Version |
3131
|------|---------|
32-
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 6.5 |
32+
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 6.19 |
3333
| <a name="provider_null"></a> [null](#provider\_null) | >= 2.0 |
3434
| <a name="provider_tls"></a> [tls](#provider\_tls) | >= 4.0 |
3535

examples/mutual-auth-alb/versions.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ terraform {
44
required_providers {
55
aws = {
66
source = "hashicorp/aws"
7-
version = ">= 6.5"
7+
version = ">= 6.19"
88
}
99
null = {
1010
source = "hashicorp/null"

main.tf

Lines changed: 44 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -450,7 +450,8 @@ resource "aws_lb_listener_rule" "this" {
450450
for_each = condition.value.host_header != null ? [condition.value.host_header] : []
451451

452452
content {
453-
values = host_header.value.values
453+
values = host_header.value.values
454+
regex_values = host_header.value.regex_values
454455
}
455456
}
456457

@@ -460,6 +461,7 @@ resource "aws_lb_listener_rule" "this" {
460461
content {
461462
http_header_name = http_header.value.http_header_name
462463
values = http_header.value.values
464+
regex_values = http_header.value.regex_values
463465
}
464466
}
465467

@@ -475,7 +477,8 @@ resource "aws_lb_listener_rule" "this" {
475477
for_each = condition.value.path_pattern != null ? [condition.value.path_pattern] : []
476478

477479
content {
478-
values = path_pattern.value.values
480+
values = path_pattern.value.values
481+
regex_values = path_pattern.value.regex_values
479482
}
480483
}
481484

@@ -501,6 +504,45 @@ resource "aws_lb_listener_rule" "this" {
501504
listener_arn = try(aws_lb_listener.this[each.value.listener_key].arn, each.value.listener_arn)
502505
priority = each.value.priority
503506

507+
dynamic "transform" {
508+
for_each = each.value.transform != null ? each.value.transform : {}
509+
510+
content {
511+
type = coalesce(transform.value.type, transform.key)
512+
513+
dynamic "host_header_rewrite_config" {
514+
for_each = transform.value.host_header_rewrite_config != null ? [transform.value.host_header_rewrite_config] : []
515+
516+
content {
517+
518+
dynamic "rewrite" {
519+
for_each = host_header_rewrite_config.value.rewrite != null ? [host_header_rewrite_config.value.rewrite] : []
520+
521+
content {
522+
regex = rewrite.value.regex
523+
replace = rewrite.value.replace
524+
}
525+
}
526+
}
527+
}
528+
dynamic "url_rewrite_config" {
529+
for_each = transform.value.url_rewrite_config != null ? [transform.value.url_rewrite_config] : []
530+
531+
content {
532+
533+
dynamic "rewrite" {
534+
for_each = url_rewrite_config.value.rewrite != null ? [url_rewrite_config.value.rewrite] : []
535+
536+
content {
537+
regex = rewrite.value.regex
538+
replace = rewrite.value.replace
539+
}
540+
}
541+
}
542+
}
543+
}
544+
}
545+
504546
tags = merge(
505547
local.tags,
506548
each.value.tags,

0 commit comments

Comments
 (0)