💭
【Terraform】ALBの作成
はじめに
下記のELBを作成していきます。
ALBの作成
aws_lb
- name : string : ロードバランサー名
- internal : bool : 内部向けかどうか
- load_balancer_type : enum :application,network,gateway
- security_gropups : string[] : セキュリティグループ
- subnet : string[] : サブネット
- tags : object : タグ
alb.tf
#------------------
#ALB
#------------------
resource "aws_alb" "alb" {
name = "${var.project}-${var.environment}-web-sg"
internal = false
load_balancer_type = "application"
security_groups = [
aws_security_group.web_sg
]
subnets = [aws_subnet.private_subnet_1a.id, aws_subnet.private_subnet_1c.id]
}
ターゲットグループとアタッチメントの作成
aws_lb_target_group
- name : string : ロードバランサー名
- port : number : ポート番号
- protocol : enum : HTTP,HTTPS,TCP,UDP,TCP_UDP
- vpc_id : string[] : VPC ID
- tags : object : タグ
aws_lb_target_group_attachment
- target_group_arn : string : 所属させたいターゲットグループのARN
- target_id : string : 所属させたいEC2のインスタンスID
alb.tf
#------------------
#target group
#------------------
resource "aws_lb_target_group" "alb_target_group" {
name = "${var.project}-${var.environment}-app-tg"
port = 3000
protocol = "HTTP"
vpc_id = aws_vpc.vpc.id
tags = {
Name = "${var.project}-${var.environment}-app-tg"
Project = var.project
Env = var.environment
}
}
resource "aws_lb_target_group_attachment" "instance" {
target_group_arn = aws_lb_target_group.alb_target_group.arn
target_id = aws_instance.app_server.id
}
リスナーの作成
aws_lb_listener(HTTP)
- load_balancer_arn : string : ロードバランサーのARN
- port : number : ポート番号(80,443)
- protcol : enum : HTTP
- default_action : block :type(forward,redirectなど),target_group_arn(forwardする際の転送先)
alb.tf
#------------------
#listener
#------------------
resource "aws_lb_listener" "alb_listener_http" {
load_balancer_arn = aws_lb.alb.arn
port = 80
protocol = "HTTP"
default_action {
type = "forward"
target_group_arn = aws_lb_target_group.alb_target_group.arn
}
}
aws_lb_listener(HTTPS)
ACMの証明書が必要。
- ssl_policy
- certificate_arn
マネジメントコンソールからALBが作成されているか確認。
Discussion