【问题标题】:AWS HTTP API Gateway connected to ALB returns 503连接到 ALB 的 AWS HTTP API 网关返回 503
【发布时间】:2022-07-21 23:42:55
【问题描述】:

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

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

我为此做了什么 我找到了一个基本上可以做我想做的事情的 AWS 教程,所以我一步一步地去with this tutorial

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

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

我为解决该问题还做了什么:

  • 添加了 Api Gateway 日志,但我没有收到任何有趣的信息,只有如下所示的原始数据:
{
    "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"
}
  • 使用不同的负载平衡器侦听器(443 或 80)。
  • 使用不同的安全组(尝试使用与 ALB 相同的安全组,或使用所有可能的安全组)

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

【问题讨论】:

  • 如果 ALB 可公开访问,则不需要 VPC 链接。我会尝试先删除它以简化事情。
  • 感谢@jaredready 的回复。我相信这个想法是将 APIGW 设置为公开,然后,当一切正常时,只需隐藏 ALB(使其私有)。这就是为什么我觉得需要 VPC。
  • 嗨@degeath 你最后是怎么解决这个问题的?

标签: amazon-web-services amazon-ec2 aws-api-gateway amazon-vpc


【解决方案1】:

我唯一能想到的是,为什么?严肃地说,APIGW 不提供任何超过 ALB 的附加值。如果您已经在使用 ALB,最简单、最便宜和最好的做法是将您的 route53 DNS 指向 ALB 并完成。

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

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

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

【讨论】:

  • 嗯,我不知道确切的原因,因为发起者不再工作,但很快就会有第三个服务(可能在我们的 VPN 之外),他们想对所有这些服务使用相同的授权者,所以也许这就是他们决定使用 API Gateway 的原因。 to use APIGW with ALB, you can point the APIGW directly at the ALB DNS - 你能帮我看看怎么做吗?
  • 值得一提的是,最后 ALB 将只有 internal
  • @degath 您找到解决问题的方法了吗?
猜你喜欢
  • 2019-05-31
  • 1970-01-01
  • 1970-01-01
  • 2018-11-19
  • 1970-01-01
  • 2020-01-27
  • 2017-11-24
  • 2017-11-13
  • 1970-01-01
相关资源
最近更新 更多