代码之家  ›  专栏  ›  技术社区  ›  leed38

在AWS CDK中,我是否需要明确声明服务def连接了LB?

  •  0
  • leed38  · 技术社区  · 2 年前

    所以我收到了这个信息

    资源处理程序返回消息:“提供的请求无效:UpdateService错误:运行状况检查宽限期仅对配置为使用负载平衡器的服务有效(服务:AmazonECS;状态代码:400;错误代码:InvalidParameterException;请求ID:91a0;代理:null)”(RequestToken:1eb3,HandlerErrorCode:InvalidRequest)

    好吧,这个错误是有道理的。我设置的Fargate服务需要连接负载平衡器。问题是,我已经在上面安装了负载平衡器了?

        self.fargate_service_definition = ecs.FargateService(self, 'Service Def',
          cluster=self.cluster,
          task_definition=self.fargate_host_definition,
          service_name=f'{resource_name_prefix}-resource',
          vpc_subnets=subnets.private_subnet_selection,
          security_groups=[security_groups.corp_security_group],
        )
    

    这是我的服务定义。负载平衡器是这样连接的

        lb = elbv2.ApplicationLoadBalancer(self, f'{resource_name_prefix}-lb',
          vpc=vpc.default_vpc,
          vpc_subnets=subnets.private_subnet_selection,
          internet_facing=False,
          security_group=security_groups.corp_security_group
        )
    
        listener = lb.add_listener('service_listener', port=80)
    
        listener.add_targets('c2-targets',
          port=80,
          targets=[
            self.fargate_service_definition.load_balancer_target(
              container_name='client',
              container_port=3000
            ),
            self.fargate_service_definition.load_balancer_target(
              container_name='server',
              container_port=4000
            )
          ]
        )
    

    我错过什么了吗?我一直在梳理cdk文档,但它没有提到任何关于明确声明该服务附加了LB的内容。我以为它甚至设置了一个健康检查,首先是因为我添加了LB。当我在没有LB的情况下进行测试时,cdk部署得非常好

    1 回复  |  直到 2 年前
        1
  •  1
  •   Marcin    2 年前

    你忘了用 register_load_balancer_targets 把你的LB和fargate服务联系起来。

    推荐文章