以下の内容はhttps://kakakakakku.hatenablog.com/entry/2025/07/29/090953より取得しました。


Terraform の aws_lb_listener で default_action に加重ルーティングを設定する

Terraform で aws_lb_listener を使って ALB (Application Load Balancer) のリスナーをデプロイするときに default_action ブロックに複数のターゲットグループへの加重ルーティングを設定できる👌

ドキュメントを抜粋すると以下のように書いてある.default_action ブロックで target_group_arn ではなく forward を使う必要があって,通常(一つのターゲットグループにルーティングする場合)とは少し異なる実装になる.

To route to one or more target groups, use a forward block instead.
一つ以上のターゲットグループにルーティングするために代わりに forward ブロックを使用します。

👾 alb.tf

参考実装を載せておく❗️

resource "aws_lb" "main" {
  name               = "sandbox"
  internal           = false
  load_balancer_type = "application"
  security_groups    = ["sg-xxxxxxxx"]
  subnets            = ["subnet-xxxxxxxx", "subnet-xxxxxxxx"]
}

resource "aws_lb_target_group" "blue" {
  name        = "sandbox-blue"
  port        = 80
  protocol    = "HTTP"
  vpc_id      = "vpc-xxxxxxxx"
  target_type = "ip"
}

resource "aws_lb_target_group" "green" {
  name        = "sandbox-green"
  port        = 80
  protocol    = "HTTP"
  vpc_id      = "vpc-xxxxxxxx"
  target_type = "ip"
}

resource "aws_lb_target_group" "yellow" {
  name        = "sandbox-yellow"
  port        = 80
  protocol    = "HTTP"
  vpc_id      = "vpc-xxxxxxxx"
  target_type = "ip"
}

resource "aws_lb_listener" "main" {
  load_balancer_arn = aws_lb.main.arn
  port              = "80"
  protocol          = "HTTP"

  default_action {
    type = "forward"

    forward {
      target_group {
        arn    = aws_lb_target_group.blue.arn
        weight = 50
      }
      target_group {
        arn    = aws_lb_target_group.green.arn
        weight = 30
      }
      target_group {
        arn    = aws_lb_target_group.yellow.arn
        weight = 20
      }
    }
  }
}

デプロイ確認

参考実装をデプロイするとこうなる.デフォルトアクションで blue / green / yellow への加重ルーティングを設定できている👌

Terraform AWS Provider ドキュメント

もともと default_action ブロックで target_group_arn ではなく forward を使った実装をする人の参考になれば良いな〜と思ってブログにまとめていたけど,もしかしたら Terraform AWS Provider のドキュメントにサンプルコードが載っていれば良いんじゃないか💡と思ってプルリクエストを送ったら merge してもらえた.

Terraform AWS Provider v6.5.0 から aws_lb_listener のドキュメントに With weighted target groups として載っているので参考になれば \( 'ω')/

github.com




以上の内容はhttps://kakakakakku.hatenablog.com/entry/2025/07/29/090953より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14