Module: alb-ingress
Terraform module to provision an HTTP style ALB ingress based on hostname and/or path.
ALB ingress can be provisioned without authentication, or using Cognito or OIDC authentication.
Usage
For a complete example, see examples/complete.
For automated test of the complete example using bats
and Terratest
, see test.
provider "aws" {
region = var.region
}
module "vpc" {
source = "cloudposse/vpc/aws"
# Cloud Posse recommends pinning every module to a specific version
# version = "x.x.x"
namespace = var.namespace
stage = var.stage
name = var.name
delimiter = var.delimiter
attributes = var.attributes
cidr_block = var.vpc_cidr_block
tags = var.tags
}
module "subnets" {
source = "cloudposse/dynamic-subnets/aws"
# Cloud Posse recommends pinning every module to a specific version
# version = "x.x.x"
availability_zones = var.availability_zones
namespace = var.namespace
stage = var.stage
name = var.name
attributes = var.attributes
delimiter = var.delimiter
vpc_id = module.vpc.vpc_id
igw_id = module.vpc.igw_id
cidr_block = module.vpc.vpc_cidr_block
nat_gateway_enabled = false
nat_instance_enabled = false
tags = var.tags
}
module "alb" {
source = "cloudposse/alb/aws"
# Cloud Posse recommends pinning every module to a specific version
# version = "x.x.x"
namespace = var.namespace
stage = var.stage
name = var.name
attributes = var.attributes
delimiter = var.delimiter
vpc_id = module.vpc.vpc_id
security_group_ids = [module.vpc.vpc_default_security_group_id]
subnet_ids = module.subnets.public_subnet_ids
internal = var.internal
http_enabled = var.http_enabled
access_logs_enabled = var.access_logs_enabled
alb_access_logs_s3_bucket_force_destroy = var.alb_access_logs_s3_bucket_force_destroy
cross_zone_load_balancing_enabled = var.cross_zone_load_balancing_enabled
http2_enabled = var.http2_enabled
idle_timeout = var.idle_timeout
ip_address_type = var.ip_address_type
deletion_protection_enabled = var.deletion_protection_enabled
deregistration_delay = var.deregistration_delay
health_check_path = var.health_check_path
health_check_timeout = var.health_check_timeout
health_check_healthy_threshold = var.health_check_healthy_threshold
health_check_unhealthy_threshold = var.health_check_unhealthy_threshold
health_check_interval = var.health_check_interval
health_check_matcher = var.health_check_matcher
target_group_port = var.target_group_port
target_group_target_type = var.target_group_target_type
tags = var.tags
}
module "alb_ingress" {
source = "cloudposse/alb-ingress/aws"
# Cloud Posse recommends pinning every module to a specific version
# version = "x.x.x"
namespace = var.namespace
stage = var.stage
name = var.name
attributes = var.attributes
delimiter = var.delimiter
vpc_id = module.vpc.vpc_id
authentication_type = var.authentication_type
unauthenticated_priority = var.unauthenticated_priority
unauthenticated_paths = var.unauthenticated_paths
slow_start = var.slow_start
stickiness_enabled = var.stickiness_enabled
default_target_group_enabled = false
target_group_arn = module.alb.default_target_group_arn
unauthenticated_listener_arns = [module.alb.http_listener_arn]
tags = var.tags
}