TerraformでALBのリスナーの記述方法を修正

terraform plan を実行すると、下記のようなエラーが発生しました。

Warning: "condition.0.field": [DEPRECATED] use 'host_header' or 'path_pattern' attribute instead

  on alb.tf line 128, in resource "aws_lb_listener_rule" "example":
 128: resource "aws_lb_listener_rule" "example" {

リスナーの記述方法を修正することで解決したので、情報をまとめます。

エラーの原因

下記のようにALBのリスナーを設定していました。

// "aws_lb_listener_rule" forwards the request to target_group.
resource "aws_lb_listener_rule" "example" {
  listener_arn = aws_lb_listener.http.arn
  priority     = 100 // The lower the number, the higher the priority.

  // "action" defines the target group of the request destination.
  action {
    type             = "forward"
    target_group_arn = aws_lb_target_group.example.arn
  }

  // "condition" specifies the condition.
  // "/*" matches on all paths.
  condition {
    field  = "path-pattern"
    values = ["*"]
  }
}

リスナーは、ALBにたどり着いたアクセスをEC2やECS、Fargateに転送するための設定を定義できます。

ALBの仕様変更に伴い、このリスナーの condition というフィールドの記述方法を修正する必要があるみたいでした。

Provide migration path from the old condition.field and condition.values keys and deprecate them

https://github.com/terraform-providers/terraform-provider-aws/pull/8268

エラーの修正

下記のように修正します。

# ↓これを
condition {
  field  = "path-pattern"
  values = ["*"]
}

↓

# ↓このように修正
condition {
  path_pattern {
    values = ["*"]
  }
}

まとめ

少しずつterraformとAWSの理解が深まってきました。やったね!