71 lines
2.0 KiB
HCL
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
|
|
}
|
|
}
|