Terraform module which creates AWS Global Accelerator resources.
Users may encounter the following error when using this module:
Error: Invalid for_each argument - The "for_each" value depends on resource attributes that
cannot be determined until apply, so Terraform cannot predict how many instances will be
created. To work around this, use the -target argument to first apply ...
This error is due to an upstream issue with Terraform core.
The Terraform resource passed into the modules map definition (specifically, endpoint targets) must be known before you can plan or apply the module. To help mitigate this issue, you can do one of the following:
- Create the dependent resources before the accelerator =>
terraform apply -target <your load balancer endpoints or ec2 instances>
and thenterraform apply
to create the accelerator and associated resources - Create the dependent resources elsewhere prior to referencing in the module defintion
See examples
directory for working examples to reference:
module "global_accelerator" {
source = "clowdhaus/global-accelerator/aws"
name = "example"
flow_logs_enabled = true
flow_logs_s3_bucket = "example-global-accelerator-flow-logs"
flow_logs_s3_prefix = "example"
listeners = {
listener_1 = {
client_affinity = "SOURCE_IP"
endpoint_group = {
health_check_port = 80
health_check_protocol = "HTTP"
health_check_path = "/"
health_check_interval_seconds = 10
health_check_timeout_seconds = 5
healthy_threshold_count = 2
unhealthy_threshold_count = 2
traffic_dial_percentage = 100
endpoint_configuration = [{
client_ip_preservation_enabled = true
endpoint_id = "arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/app/blue/1234567890123456"
weight = 50
}, {
client_ip_preservation_enabled = false
endpoint_id = "arn:aws:elasticloadbalancing:us-east-1:123456789012:loadbalancer/app/green/1234567890123456"
weight = 50
}]
port_override = [{
endpoint_port = 82
listener_port = 80
}, {
endpoint_port = 8082
listener_port = 8080
}, {
endpoint_port = 8083
listener_port = 8081
}]
}
port_ranges = [
{
from_port = 80
to_port = 81
},
{
from_port = 8080
to_port = 8081
}
]
protocol = "TCP"
}
listener_2 = {
port_ranges = [
{
from_port = 443
to_port = 443
},
{
from_port = 8443
to_port = 8443
}
]
protocol = "TCP"
}
listener_3 = {
port_ranges = [
{
from_port = 53
to_port = 53
}
]
protocol = "UDP"
}
}
tags = {
Terraform = "true"
Environment = "dev"
}
}
Examples codified under the examples
are intended to give users references for how to use the module(s) as well as testing/validating changes to the source code of the module. If contributing to the project, please be sure to make any appropriate updates to the relevant examples to allow maintainers to test your changes and to keep the examples up to date for users. Thank you!
Name | Version |
---|---|
terraform | >= 0.13.1 |
aws | >= 3.33 |
Name | Version |
---|---|
aws | >= 3.33 |
No modules.
Name | Type |
---|---|
aws_globalaccelerator_accelerator.this | resource |
aws_globalaccelerator_endpoint_group.this | resource |
aws_globalaccelerator_listener.this | resource |
Name | Description | Type | Default | Required |
---|---|---|---|---|
create | Controls if resources should be created (affects nearly all resources) | bool |
true |
no |
create_listeners | Controls if listeners should be created (affects only listeners) | bool |
true |
no |
enabled | Indicates whether the accelerator is enabled. Defaults to true . Valid values: true , false |
bool |
true |
no |
endpoint_groups_timeouts | Create, update, and delete timeout configurations for the endpoint groups | map(string) |
{} |
no |
flow_logs_enabled | Indicates whether flow logs are enabled. Defaults to false |
bool |
false |
no |
flow_logs_s3_bucket | The name of the Amazon S3 bucket for the flow logs. Required if flow_logs_enabled is true |
string |
null |
no |
flow_logs_s3_prefix | The prefix for the location in the Amazon S3 bucket for the flow logs. Required if flow_logs_enabled is true |
string |
null |
no |
ip_address_type | The value for the address type. Defaults to IPV4 . Valid values: IPV4 |
string |
"IPV4" |
no |
listeners | A map of listener defintions to create | any |
{} |
no |
listeners_timeouts | Create, update, and delete timeout configurations for the listeners | map(string) |
{} |
no |
name | The name of the accelerator | string |
"" |
no |
tags | A map of tags to add to all resources | map(string) |
{} |
no |
Name | Description |
---|---|
dns_name | The DNS name of the accelerator |
endpoint_groups | Map of endpoints created and their associated attributes |
hosted_zone_id | The Global Accelerator Route 53 zone ID that can be used to route an Alias Resource Record Set to the Global Accelerator |
id | The Amazon Resource Name (ARN) of the accelerator |
ip_sets | IP address set associated with the accelerator |
listeners | Map of listeners created and their associated attributes |
Apache-2.0 Licensed. See LICENSE.