Amazon web services 私有子网未与公共健康检查对话失败

Amazon web services 私有子网未与公共健康检查对话失败,amazon-web-services,nat,aws-fargate,aws-application-load-balancer,Amazon Web Services,Nat,Aws Fargate,Aws Application Load Balancer,我试图实现本文中描述的以下体系结构 我有一个使用ENI(专用IP为10.0.241.85)的Fargate服务,运行在一个专用子网(我们称之为“子网-1”)中。ENI也有一个弹性IP,因为如果没有,它无法从ECR中提取图像。但我认为这无关紧要?我的服务中的容器正在暴露端口3000/4000。然后我将我的ALB&NAT网关放在一个公共子网中(我们称之为“子网2”)。ALB将端口80/443上的流量转发到必要的目标组。目标组有2个注册任务,目标是ENI上的专用IP(1个在端口3000上,另一个在端

我试图实现本文中描述的以下体系结构

我有一个使用ENI(专用IP为10.0.241.85)的Fargate服务,运行在一个专用子网(我们称之为“子网-1”)中。ENI也有一个弹性IP,因为如果没有,它无法从ECR中提取图像。但我认为这无关紧要?我的服务中的容器正在暴露端口3000/4000。然后我将我的ALB&NAT网关放在一个公共子网中(我们称之为“子网2”)。ALB将端口80/443上的流量转发到必要的目标组。目标组有2个注册任务,目标是ENI上的专用IP(1个在端口3000上,另一个在端口4000上)。据我所知,这应该允许车辆进入,对吗

对于流量输出,子网1有一个默认路由(0.0.0.0/0)到子网2中的NAT网关,这应该允许流量输出,对吗

所有服务均位于相同的专有网络和相同的可用区(如适用)

我有两个安全组,由这些服务使用:

  • 试验
  • 原料药
  • 测试(入站)

    测试(出站)

    api(入站)

    api(出站)

    我们利用临时端口在两个安全组之间进行通信

    注意:我在这里删除了目标,但是,是的,目标是测试安全组

    子网1路由表

    子网2路由表

    注意:覆盖的路由只是一个向外的对等连接,因此与此无关

    据我所知,这两个子网应该能够使用它们内部服务的专用IP进行通信,这就是我在这里所做的

    运行状况检查失败,一般消息为:

    任务ELB运行状况检查失败

    我也在博客上寻求更多的帮助,但没有任何效果


    任何帮助都将不胜感激:)

    如果您的任务正在侦听端口3000和4000,则您的安全组(
    test
    我猜,根据您的评论)将需要允许这些端口。按照现在的配置,我不认为端口3000和4000是允许的

    还有几点需要注意的是,由于私有子网无法直接访问internet,因此,在您的ENI上的私有子网中使用弹性IP不会起任何作用。如果您在没有ECR的情况下连接到ECR时遇到问题,则肯定存在其他问题


    此外,您的SG规则允许非常大的CIDR块,如
    0.0.0.0/0
    。更安全的配置只允许需要访问的特定安全组。在这种情况下,您可能希望应用程序的端口(听起来像3000和4000)来自负载平衡器的SG ID。

    非常感谢!这不是完整的答案,但肯定是其中的一半。另一半是,如果重定向到HTTPS,我们的应用程序将抛出301状态码。运行状况检查是通过HTTP进行的,因此被重定向,在运行状况检查中,301不在我的成功代码范围内
    | Service | Security Groups |
    |---------|-----------------|
    | ENI     | test            |
    |         | api             |
    |---------|-----------------|
    | ALB     | api             |
    |---------|-----------------|