alb
This component is responsible for provisioning a generic Application Load Balancer. It depends on the vpc
and
dns-delegated
components.
Usage
Stack Level: Regional
Here's an example snippet for how to use this component.
components:
terraform:
alb:
vars:
https_ssl_policy: ELBSecurityPolicy-FS-1-2-Res-2020-10
health_check_path: /api/healthz
Variables
Required Variables
Optional Variables
access_logs_enabled
(bool
) optionalA boolean flag to enable/disable access_logs
Default value:
true
access_logs_prefix
(string
) optionalThe S3 log bucket prefix
Default value:
""
access_logs_s3_bucket_id
(string
) optionalAn external S3 Bucket name to store access logs in. If specified, no logging bucket will be created.
Default value:
null
acm_component_name
(string
) optionalAtmos
acm
component nameDefault value:
"acm"
alb_access_logs_s3_bucket_force_destroy
(bool
) optionalA boolean that indicates all objects should be deleted from the ALB access logs S3 bucket so that the bucket can be destroyed without error
Default value:
false
cross_zone_load_balancing_enabled
(bool
) optionalA boolean flag to enable/disable cross zone load balancing
Default value:
true
deletion_protection_enabled
(bool
) optionalA boolean flag to enable/disable deletion protection for ALB
Default value:
false
deregistration_delay
(number
) optionalThe amount of time to wait in seconds before changing the state of a deregistering target to unused
Default value:
15
dns_acm_enabled
(bool
) optionalIf
true
, use the ACM ARN created by the givendns-delegated
component. Otherwise, use the ACM ARN created by the givenacm
component.Default value:
false
dns_delegated_component_name
(string
) optionalAtmos
dns-delegated
component nameDefault value:
"dns-delegated"
dns_delegated_environment_name
(string
) optionaldns-delegated
component environment nameDefault value:
null
drop_invalid_header_fields
(bool
) optionalIndicates whether HTTP headers with header fields that are not valid are removed by the load balancer (true) or routed to targets (false).
Default value:
false
health_check_healthy_threshold
(number
) optionalThe number of consecutive health checks successes required before considering an unhealthy target healthy
Default value:
2
health_check_interval
(number
) optionalThe duration in seconds in between health checks
Default value:
15
health_check_matcher
(string
) optionalThe HTTP response codes to indicate a healthy check
Default value:
"200-399"
health_check_path
(string
) optionalThe destination for the health check request
Default value:
"/"
health_check_port
(string
) optionalThe port to use for the healthcheck
Default value:
"traffic-port"
health_check_timeout
(number
) optionalThe amount of time to wait in seconds before failing a health check request
Default value:
10
health_check_unhealthy_threshold
(number
) optionalThe number of consecutive health check failures required before considering the target unhealthy
Default value:
2
http2_enabled
(bool
) optionalA boolean flag to enable/disable HTTP/2
Default value:
true
http_enabled
(bool
) optionalA boolean flag to enable/disable HTTP listener
Default value:
true
http_ingress_cidr_blocks
(list(string)
) optionalList of CIDR blocks to allow in HTTP security group
Default value:
[
"0.0.0.0/0"
]http_ingress_prefix_list_ids
(list(string)
) optionalList of prefix list IDs for allowing access to HTTP ingress security group
Default value:
[ ]
http_port
(number
) optionalThe port for the HTTP listener
Default value:
80
http_redirect
(bool
) optionalA boolean flag to enable/disable HTTP redirect to HTTPS
Default value:
true
https_enabled
(bool
) optionalA boolean flag to enable/disable HTTPS listener
Default value:
true
https_ingress_cidr_blocks
(list(string)
) optionalList of CIDR blocks to allow in HTTPS security group
Default value:
[
"0.0.0.0/0"
]https_ingress_prefix_list_ids
(list(string)
) optionalList of prefix list IDs for allowing access to HTTPS ingress security group
Default value:
[ ]
https_port
(number
) optionalThe port for the HTTPS listener
Default value:
443
https_ssl_policy
(string
) optionalThe name of the SSL Policy for the listener
Default value:
"ELBSecurityPolicy-TLS13-1-2-2021-06"
idle_timeout
(number
) optionalThe time in seconds that the connection is allowed to be idle
Default value:
60
internal
(bool
) optionalA boolean flag to determine whether the ALB should be internal
Default value:
false
ip_address_type
(string
) optionalThe type of IP addresses used by the subnets for your load balancer. The possible values are
ipv4
anddualstack
.Default value:
"ipv4"
lifecycle_rule_enabled
(bool
) optionalA boolean that indicates whether the s3 log bucket lifecycle rule should be enabled.
Default value:
true
stickiness
optionalTarget group sticky configuration
Type:
object({
cookie_duration = number
enabled = bool
})Default value:
null
target_group_name
(string
) optionalThe name for the default target group, uses a module label name if left empty
Default value:
""
target_group_port
(number
) optionalThe port for the default target group
Default value:
80
target_group_protocol
(string
) optionalThe protocol for the default target group HTTP or HTTPS
Default value:
"HTTP"
target_group_target_type
(string
) optionalThe type (
instance
,ip
orlambda
) of targets that can be registered with the target groupDefault value:
"ip"
vpc_component_name
(string
) optionalAtmos
vpc
component nameDefault value:
"vpc"
Context Variables
The following variables are defined in the context.tf
file of this module and part of the terraform-null-label pattern.
context.tf
file of this module and part of the terraform-null-label pattern.Outputs
access_logs_bucket_id
The S3 bucket ID for access logs
alb_arn
The ARN of the ALB
alb_arn_suffix
The ARN suffix of the ALB
alb_dns_name
DNS name of ALB
alb_name
The ARN suffix of the ALB
alb_zone_id
The ID of the zone which ALB is provisioned
default_target_group_arn
The default target group ARN
http_listener_arn
The ARN of the HTTP forwarding listener
http_redirect_listener_arn
The ARN of the HTTP to HTTPS redirect listener
https_listener_arn
The ARN of the HTTPS listener
listener_arns
A list of all the listener ARNs
security_group_id
The security group ID of the ALB
Dependencies
Requirements
terraform
, version:>= 1.0.0
aws
, version:>= 4.0
local
, version:>= 2.1
Modules
Name | Version | Source | Description |
---|---|---|---|
acm | 1.8.0 | cloudposse/stack-config/yaml//modules/remote-state | n/a |
alb | 1.11.1 | cloudposse/alb/aws | n/a |
dns_delegated | 1.8.0 | cloudposse/stack-config/yaml//modules/remote-state | n/a |
iam_roles | latest | ../account-map/modules/iam-roles | n/a |
this | 0.25.0 | cloudposse/label/null | n/a |
vpc | 1.8.0 | cloudposse/stack-config/yaml//modules/remote-state | n/a |
References
- cloudposse/terraform-aws-components - Cloud Posse's upstream component