Amazon HTTP API 网关无法通过 VPC 链接工作

Ale*_*arT 4 amazon-web-services aws-api-gateway

我有Fargate ECS一项正在执行的任务,ALB一切正常。由于这ALB是内部的,我想通过新的HTTP API GatewayviaVPC链接公开它HTTP API

我已经VPCHTTP API(为 internal 指定安全组和子网ALB)创建了新链接,并将其创建HTTP API Gateway并连接到VPC链接 + ALB

我正在尝试绘制特定路线({proxy+}以及在其他情况下),但似乎我得到了,

{
  "message": "Service Unavailable"
}
Run Code Online (Sandbox Code Playgroud)

在正确的链接上。

(在不存在的情况下URLs,我得到了404- 正如预期的那样)。我也在面向互联网的情况下尝试了这个ALB(也通过VPC链接连接- 仅用于测试目的),但似乎又是这种情况。

我什至NLB使用HTTP API VPC链接对其进行了测试- 并且仍然具有相同的行为。

知道这是否有效吗?(因为它在 中UI,我认为它确实如此?)

更新:它似乎只在default阶段工作对于其他阶段,我已经创建了(开发和测试版),我得到了404.

对我来说,似乎由于URLsfor dev 和 beta 是/devand /beta,负载平衡器“变得混乱”。

小智 11

VPC 链接需要位于私有子网中(很可能是因为 NAT 网关)。如果将其放置在公共子网中,则会导致 503 错误,这也可能是您的情况。


Sur*_*tia 1

HTTP API 不像原始 REST API 那样执行 URL 映射。API Gateway 只是传递在 HTTP API 的curl/invoke 中获取的路径 -

如果你传入/fooURL 后端应该有一个资源/foo

如果你传入/foo/barURL 后端应该有一个资源/foo/bar

对于较旧的 VPC 链接,您可以使用 URL 来映射

/foo -> /bar/baz
Run Code Online (Sandbox Code Playgroud)

这可能就是 404 的原因。

至于503 Service unavailable,查看ALB的访问日志,看看是否收到来自API网关的连接。请求可能会路由到默认规则,而不是您可能定义的任何自定义 ALB 规则。如果目标不健康或缺失,这将导致您的请求指向不正确的目标组,从而导致 503 错误。