【发布时间】:2022-07-21 23:42:55
【问题描述】:
我目前的解决方案: 我的应用程序由部署到 ECS 的两个单独的服务/容器组成。这些服务位于 Virtual Private Cloud (VPC) 内部,为了公开我创建的 EC2 Application Load Balancer 应用程序,该应用程序运行良好,我可以通过 Load Balancer URL 轻松访问该应用程序。
我想要达到的目标: 目前我正在尝试创建一个链接到上述负载均衡器的 API 网关,以通过 API 网关而不是负载均衡器访问应用程序。
我为此做了什么 我找到了一个基本上可以做我想做的事情的 AWS 教程,所以我一步一步地去with this tutorial
- 已创建 Http API 网关
- 已创建 VPC-LINK(连接到所有可能的子网和所有可能的安全组,以防万一)
- 创建了单一路线
ANY /{proxy+}基本上可以捕获所有内容 - 创建了与该路由的集成(我选择上述负载平衡器作为目标服务)。
一切都是循序渐进的,和教程中的一样,但不幸的是最后一步我应该看到我的网页我看到了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