Pricing MCP Serverで利⽤費計算して」 # --- Web層 (ALB & オートスケーリング) --- resource "aws_lb" "web_alb" { name = "${local.project_name}-web-alb", internal = false, load_balancer_type = "application" security_groups = [aws_security_group.web_sg.id], subnets = local.public_subnet_ids tags = {Name = "${local.project_name}-web-alb"} } resource "aws_lb_target_group" "web_tg" { name = "${local.project_name}-web-tg", port = 80, protocol = "HTTP", vpc_id = local.vpc_id } resource "aws_lb_listener" "web_http" { load_balancer_arn = aws_lb.web_alb.arn, port = 80, protocol = "HTTP" default_action {type = "forward", target_group_arn = aws_lb_target_group.web_tg.arn} } resource "aws_launch_template" "web_lt" { name_prefix = "${local.project_name}-web-", image_id = local.ami_id instance_type = "m5.large", key_name = local.key_name vpc_security_group_ids = [aws_security_group.web_sg.id] } resource "aws_autoscaling_group" "web_asg" { name = "${local.project_name}-web-asg", vpc_zone_identifier = local.public_subnet_ids desired_capacity = 2, max_size = 4, min_size = 2 target_group_arns = [aws_lb_target_group.web_tg.arn] launch_template {id = aws_launch_template.web_lt.id, version = "$$Latest"} } # --- App層 (オートスケーリング) --- resource "aws_launch_template" "app_lt" { name_prefix = "${local.project_name}-app-", image_id = local.ami_id instance_type = "c5.xlarge", key_name = local.key_name vpc_security_group_ids = [aws_security_group.app_sg.id] } resource "aws_autoscaling_group" "app_asg" { name = "${local.project_name}-app-asg", vpc_zone_identifier = local.private_app_subnet_ids desired_capacity = 2, max_size = 4, min_size = 2 launch_template {id = aws_launch_template.app_lt.id, version = "$$Latest"} } # --- DB層 (RDS) --- resource "aws_db_subnet_group" "main" { name = "${local.project_name}-db-subnet-group", subnet_ids = local.private_db_subnet_ids } resource "aws_db_instance" "main" { allocated_storage = 100, storage_type = "gp3", engine = "mysql", engine_version = "8.0" instance_class = "db.r5.large", identifier = "${local.project_name}-db-instance" username = local.db_username, password = local.db_password db_subnet_group_name = aws_db_subnet_group.main.name multi_az = true, skip_final_snapshot = true, publicly_accessible = false vpc_security_group_ids = [aws_security_group.db_sg.id] tags = {Name = "${local.project_name}-db-instance"} }