连接到 ALB 的 AWS HTTP API Gateway 返回 503

deg*_*ath 7 amazon-ec2 amazon-web-services amazon-vpc aws-api-gateway

我当前的解决方案: 我的应用程序由部署到 ECS 的两个单独的服务/容器组成。这些服务位于虚拟私有云 (VPC) 内部,为了公开我创建的 EC2 应用程序负载均衡器(该应用程序运行完美),我可以通过负载均衡器 URL 轻松访问该应用程序。

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

为了实现这一目标,我 找到了一个 AWS 教程,它基本上完成了我想要做的事情,所以我一步步学习了本教程

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

一切都是一步一步的,与教程中的相同,但不幸的是最后一步我应该看到我看到的网页ERROR: 503 {"message":"Service Unavailable"}

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

  • 添加了 Api 网关日志,但我没有收到任何有趣的东西,只有原始数据,如下所示:
{
    "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"
}
Run Code Online (Sandbox Code Playgroud)
  • 使用不同的负载均衡器侦听器(443 或 80)进行播放。
  • 使用不同的安全组(尝试使用与 ALB 相同的安全组,或使用所有可能的安全组)

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

War*_*rad 3

我唯一能想到的是,为什么?说实话,APIGW 并不比 ALB 提供任何额外的价值。如果您已经在使用 ALB,最简单、最便宜且最好的做法是将您的 Route53 DNS 指向 ALB 并完成。

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

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

如果出于某种原因,这里是有关 VPC-Link 的 AWS 文档。实际上,设置问题可能是进一步的配置问题。您可以通过检查 ALB 流日志来验证这一点。