aws_lb
Provides a Load Balancer resource.
Note:
aws_alb
is known asaws_lb
. The functionality is identical.
Example Usage
Application Load Balancer
resource "aws_lb" "test" { name = "test-lb-tf" internal = false load_balancer_type = "application" security_groups = ["${aws_security_group.lb_sg.id}"] subnets = ["${aws_subnet.public.*.id}"] enable_deletion_protection = true access_logs { bucket = "${aws_s3_bucket.lb_logs.bucket}" prefix = "test-lb" enabled = true } tags { Environment = "production" } }
Network Load Balancer
resource "aws_lb" "test" { name = "test-lb-tf" internal = false load_balancer_type = "network" subnets = ["${aws_subnet.public.*.id}"] enable_deletion_protection = true tags { Environment = "production" } }
Specifying Elastic IPs
resource "aws_lb" "example" { name = "example" load_balancer_type = "network" subnet_mapping { subnet_id = "${aws_subnet.example1.id}" allocation_id = "${aws_eip.example1.id}" } subnet_mapping { subnet_id = "${aws_subnet.example2.id}" allocation_id = "${aws_eip.example2.id}" } }
Argument Reference
The following arguments are supported:
-
name
- (Optional) The name of the LB. This name must be unique within your AWS account, can have a maximum of 32 characters, must contain only alphanumeric characters or hyphens, and must not begin or end with a hyphen. If not specified, Terraform will autogenerate a name beginning withtf-lb
. -
name_prefix
- (Optional) Creates a unique name beginning with the specified prefix. Conflicts withname
. -
internal
- (Optional) If true, the LB will be internal. -
load_balancer_type
- (Optional) The type of load balancer to create. Possible values areapplication
ornetwork
. The default value isapplication
. -
security_groups
- (Optional) A list of security group IDs to assign to the LB. Only valid for Load Balancers of typeapplication
. -
access_logs
- (Optional) An Access Logs block. Access Logs documented below. Only valid for Load Balancers of typeapplication
. -
subnets
- (Optional) A list of subnet IDs to attach to the LB. Subnets cannot be updated for Load Balancers of typenetwork
. Changing this value for load balancers of typenetwork
will force a recreation of the resource. -
subnet_mapping
- (Optional) A subnet mapping block as documented below. -
idle_timeout
- (Optional) The time in seconds that the connection is allowed to be idle. Only valid for Load Balancers of typeapplication
. Default: 60. -
enable_deletion_protection
- (Optional) If true, deletion of the load balancer will be disabled via the AWS API. This will prevent Terraform from deleting the load balancer. Defaults tofalse
. -
enable_cross_zone_load_balancing
- (Optional) If true, cross-zone load balancing of the load balancer will be enabled. This is anetwork
load balancer feature. Defaults tofalse
. -
enable_http2
- (Optional) Indicates whether HTTP/2 is enabled inapplication
load balancers. Defaults totrue
. -
ip_address_type
- (Optional) The type of IP addresses used by the subnets for your load balancer. The possible values areipv4
anddualstack
-
tags
- (Optional) A mapping of tags to assign to the resource.
NOTE:: Please note that internal LBs can only use
ipv4
as the ip_address_type. You can only change todualstack
ip_address_type if the selected subnets are IPv6 enabled.
Access Logs (access_logs
) support the following:
-
bucket
- (Required) The S3 bucket name to store the logs in. -
prefix
- (Optional) The S3 bucket prefix. Logs are stored in the root if not configured. -
enabled
- (Optional) Boolean to enable / disableaccess_logs
. Defaults tofalse
, even whenbucket
is specified.
Subnet Mapping (subnet_mapping
) blocks support the following:
-
subnet_id
- (Required) The id of the subnet of which to attach to the load balancer. You can specify only one subnet per Availability Zone. -
allocation_id
- (Optional) The allocation ID of the Elastic IP address.
Attributes Reference
The following attributes are exported in addition to the arguments listed above:
-
id
- The ARN of the load balancer (matchesarn
). -
arn
- The ARN of the load balancer (matchesid
). -
arn_suffix
- The ARN suffix for use with CloudWatch Metrics. -
dns_name
- The DNS name of the load balancer. -
canonical_hosted_zone_id
- The canonical hosted zone ID of the load balancer. -
zone_id
- The canonical hosted zone ID of the load balancer (to be used in a Route 53 Alias record).
Timeouts
aws_lb
provides the following Timeouts configuration options:
-
create
- (Default10 minutes
) Used for Creating LB -
update
- (Default10 minutes
) Used for LB modifications -
delete
- (Default10 minutes
) Used for destroying LB
Import
LBs can be imported using their ARN, e.g.
$ terraform import aws_lb.bar arn:aws:elasticloadbalancing:us-west-2:123456789012:loadbalancer/app/my-load-balancer/50dc6c495c0c9188
© 2018 HashiCorpLicensed under the MPL 2.0 License.
https://www.terraform.io/docs/providers/aws/r/lb.html