provisioning-2/modules/alb/main.tf

71 lines
2.0 KiB
HCL

# ---------------------------
# ALB
# ---------------------------
# ALBの作成
resource "aws_lb" "alb" {
name = "${var.name_prefix}${var.env}-${var.alb_name}"
internal = false
load_balancer_type = "application"
security_groups = [var.alb_sg_id]
subnets = [
var.aws_subnet_public_1a_id,
var.aws_subnet_public_1c_id
]
ip_address_type = "ipv4"
tags = {
Name = "${var.name_prefix}${var.env}-${var.alb_name}"
}
}
# ターゲットグループの作成
resource "aws_lb_target_group" "target_group" {
name = "${var.name_prefix}${var.env}-${var.target_group_name}"
target_type = "instance"
protocol_version = "HTTP1"
port = 80
protocol = "HTTP"
vpc_id = var.vpc_id
# ヘルスチェックの設定
health_check {
interval = 30
path = "/wp-includes/images/blank.gif"
port = "traffic-port"
protocol = "HTTP"
timeout = 5
healthy_threshold = 5
unhealthy_threshold = 2
matcher = "200,301"
}
# スティッキーセッションの設定
stickiness {
type = "lb_cookie"
cookie_duration = 1800
enabled = true
}
tags = {
Name = "${var.name_prefix}${var.env}-${var.target_group_name}"
}
}
# ターゲットグループとインスタンスの紐づけ
resource "aws_lb_target_group_attachment" "attach_ec2_web1" {
target_group_arn = aws_lb_target_group.target_group.arn
target_id = var.ec2_web1_id
}
resource "aws_lb_target_group_attachment" "attach_ec2_web2" {
target_group_arn = aws_lb_target_group.target_group.arn
target_id = var.ec2_web2_id
}
# リスナーの設定
resource "aws_lb_listener" "listener" {
load_balancer_arn = aws_lb.alb.arn
port = 80
protocol = "HTTP"
default_action {
type = "forward"
target_group_arn = aws_lb_target_group.target_group.arn
}
}