AWS HTTP API 网关连接到 ALB returns 503

AWS HTTP API Gateway connected to ALB returns 503

我目前的解决方案: 我的应用程序由两个部署到 ECS 的独立 services/containers 组成。这些服务位于 Virtual Private Cloud (VPC) 内,并且为了公开我创建的 EC2 Application Load Balancer 应用程序,它运行完美,我可以通过 Load Balancer URL 轻松访问该应用程序。

我要实现的目标: 目前我正在尝试创建一个 API 网关 linked 到上面提到的负载均衡器,以通过 API 网关而不是负载均衡器访问应用程序。

我是怎么做到的 我找到了一个 AWS 教程,它基本上完成了我想做的事情,所以我一步一步 with this tutorial

  1. 已创建 Http API 网关
  2. 已创建 VPC-LINK(连接到所有可能的子网和所有可能的安全组以防万一)
  3. 创建了一条路线 ANY /{proxy+} 基本上可以捕捉到所有东西
  4. 创建了与该路由的集成(我在其中选择了上述负载均衡器作为目标服务)。

一切都是一步一步来的,和教程一样,但不幸的是最后一步我应该看到我的网页我看到了ERROR: 503 {"message":"Service Unavailable"}

我还做了什么来解决这个问题:

{
    "requestId": "PgELwjAyjoEEPgQ=",
    "ip": "185.244.96.51",
    "requestTime": "24/Mar/2022:18:09:40 +0000",
    "httpMethod": "GET",
    "routeKey": "ANY /{proxy+}",
    "status": "503",
    "protocol": "HTTP/1.1",
    "responseLength": "33"
}

问题是,我在这里缺少什么? 我猜问题出在VPC link和负载均衡器之间的连接上,但老实说我不知道​​如何检查和验证它​​。我一步一步地点击了所有的东西,在很多地方都有单选选项,所以我真的很困惑我在哪里可能犯了错误。这是基础设施的说明性照片和我猜测问题可能出在哪里(但它仍然是一个猜测。

我唯一能想到的是,为什么?认真地说,APIGW 不提供任何超过 ALB 的额外价值。如果您已经在使用 ALB,那么最简单、成本最低且最好的做法是将您的 route53 DNS 指向 ALB 并完成。

在任何情况下 VPC-link 永远不会工作,APIGW 不能与内部 VPC 一起工作,并且 VPC-link 要求客户端与服务在同一个 VPC 中。由于 VPC-link 在 VPC 内部,而 HTTP API 在外部,这当然会导致问题,特别是“我找不到那个依赖项”,其中 503 是预期的状态代码。

如果出于某些荒谬的原因您仍想将 APIGW 与 ALB 一起使用,您可以将 APIGW 直接指向 ALB DNS,然后完成。但同样,这会带来负面价值,并且会花费额外的金钱和性能,从而对您的用户、开发人员和您的公司钱包产生全面的负面影响。