【问题标题】:Terraform does not attach alb target group to load balancerTerraform 不会将 alb 目标组附加到负载均衡器
【发布时间】:2020-07-26 17:20:05
【问题描述】:

我有负载均衡器、目标组、alb 侦听器和 aws ecs 服务,如下所示

resource "aws_alb" "django_alb" {
  name = "fpstory-django-alb"
  subnets = aws_subnet.public_subnet.*.id
  security_groups = [aws_security_group.django_lb.id]

  tags = {
    Project = "fpstory"
    Stage = terraform.workspace
  }
}

resource "aws_alb_target_group" "django_tg" {
  name = "fpstory-django-alb-target-group"
  port = 80
  protocol = "HTTP"
  vpc_id = aws_vpc.main.id
  target_type = "ip"

  depends_on = [
    aws_alb.django_alb
  ]

  health_check {
    healthy_threshold = "3"
    interval = "30"
    protocol = "HTTP"
    matcher = "200"
    port = var.django_port
    timeout = "5"
    path = var.health_check_path
    unhealthy_threshold = "3"
  }

  tags = {
    project = "fpstory"
    stage = terraform.workspace
  }
}

resource "aws_alb_listener" "django" {
  load_balancer_arn = aws_alb.django_alb.arn
  port = "80"
  protocol = "HTTP"
//  certificate_arn = var.certificate_arn

  default_action {
    target_group_arn = aws_alb_target_group.django_tg.id
    type = "redirect"

    redirect {
      status_code = "HTTP_301"
      protocol = "HTTP"
      port = var.django_port
    }
  }

}

resource "aws_ecs_service" "django" {
  name = "${terraform.workspace}-fpstory-django-service"
  cluster = aws_ecs_cluster.main.id
  task_definition = aws_ecs_task_definition.django.arn
  desired_count = var.django_count
  launch_type = "FARGATE"

  depends_on = [
    aws_alb_target_group.django_tg,
    aws_iam_role_policy_attachment.ecs_task_execution_role
  ]

  network_configuration {
    security_groups = [
      aws_security_group.django_ecs_tasks.id
    ]
    subnets = aws_subnet.public_subnet.*.id

    assign_public_ip = true
  }

  load_balancer {
    target_group_arn = aws_alb_target_group.django_tg.arn
    container_name = var.django_container_name
    container_port = var.django_port
  }

  tags = {
    Project = "fpstory"
    Stage = terraform.workspace
  }
}

当我创建运行 terraform apply 的基础架构时,我收到以下错误。

InvalidParameterException: The target group with targetGroupArn arn:aws:elasticloadbalancing:ap-northeast-2:985371652497:targetgroup/fpstory-django-alb-target-group/537aa9c2afb0c38a does not have an associated load balancer. "stag-fpstory-django-service"

当我查看 AWS 控制台时,目标组确实没有与任何负载均衡器相关联。为了将目标组与负载均衡器相关联,我还需要指定其他内容吗?

【问题讨论】:

    标签: amazon-web-services terraform amazon-ecs


    【解决方案1】:

    我认为您希望将“前进”指定为操作类型。

    在“重定向”的情况下,您不需要目标组。

    resource "aws_alb_listener" "django" {
      load_balancer_arn = aws_alb.django_alb.arn
      port = "80"
      protocol = "HTTP"
    //  certificate_arn = var.certificate_arn
    
      default_action {
        target_group_arn = aws_alb_target_group.django_tg.id
        type             = "forward"
      }
    }
    

    【讨论】:

    • 是的,这就是解决问题的方法。但是,我非常困惑的是,在端口 80 上侦听并“转发”到目标组上的端口 80 仍然会到达我容器上的端口 3000...
    • 那很好。看看这个。 stackoverflow.com/questions/42715647/…
    猜你喜欢
    • 2020-07-28
    • 2021-05-19
    • 2020-07-24
    • 2020-05-08
    • 2020-09-27
    • 2020-11-02
    • 1970-01-01
    • 1970-01-01
    • 2021-12-07
    相关资源
    最近更新 更多