【问题标题】:AWS API Gateway simple http proxy Invalid endpoint addressAWS API Gateway 简单 http 代理 终端节点地址无效
【发布时间】:2019-07-09 19:05:17
【问题描述】:

我正在尝试使用 AWS API 网关来配置简单的 http 代理,遵循此页面中的示例: https://docs.aws.amazon.com/apigateway/latest/developerguide/api-gateway-create-api-as-simple-proxy-for-http.html 我遇到的问题是,如果我的端点 URL 是另一个 AWS API 网关,它似乎可以工作,但我无法让它适用于任何其他 URL。

我正在使用资源路径 /{proxy+} 创建一个代理资源并启用 API 网关 CORS,然后创建任何方法作为 HTTP 代理和内容处理直通(就像上面提到的示例中的 petshop 示例)。如果我将端点设置为另一个 AWS API 网关,它就可以工作。

但是,如果我将端点设置为非 AWS URL,我会收到 500 响应,并在我的 API 网关 Cloudwatch 日志中看到:

由于配置错误,执行失败:端点地址无效

我的端点位于公司内部网络上,但作为测试,我还尝试代理到 Internet 地址,但失败并出现同样的错误。 (我应该注意,在这两种情况下,我都试图代理到一个 https 地址,而不仅仅是 http。)

为了排除网络路由或防火墙问题,我登录到我们同一区域的 AWS EC2 实例并测试通过 curl 访问端点 URL,这很成功。

有没有人成功使用 API 网关简单 https 代理到其他 AWS API 网关以外的任何东西?

【问题讨论】:

  • 如果站点可以从 Internet 访问,这应该可以工作。如果需要,请尝试使用我的测试站点 echo.sqlbot.net。 (它会回显您的请求标头。)这台机器是可公开访问的,并且不在 AWS 内。
  • @mojoken,您好,能否确认您在将端点 URL 更改为公共 https 端点后是否部署了 API [1]? [1]docs.aws.amazon.com/apigateway/latest/developerguide/…
  • 感谢@Michael-sqlbot 我尝试调用 echo.sqlbot.net 并成功通过。所以这似乎表明我有路由或防火墙问题。我会进一步调查。
  • @DenisWeerasiri 是的,每次更改后我都会重新部署我的 API,谢谢。
  • @mojoken 至少你现在有一些确认,你的一般方法是有效的。我不确定究竟是什么条件会导致“无效的端点地址”,但这可能是 DNS 问题——API Gateway 试图访问的主机名后面的 IP 地址需要是公共 IP 地址。如果它是私有 IP 地址,那可能就是问题所在。

标签: amazon-web-services proxy aws-api-gateway


【解决方案1】:

我假设从 EC2 实例进行测试将验证没有路由、防火墙或 DNS 问题。这是一个错误的假设,因为事实证明 API 网关不一定位于同一网络中或与同一区域中的 EC2 具有相同的访问权限。感谢@Michael 的帮助 - sqlbot 我能够确定这实际上是一个网络访问问题,但由于 API 网关不在正确的网络中,我的 DevOps 团队无法解决这个问题。

相反,解决方案是我必须编写一个小的 lambda 函数(前面是一个带有 lambda 代理集成的 API 网关资源),类似于我在我们的应用程序中为 RESTful API 编写其他 lambdas 的方式。从 lambda 中,我可以更灵活地访问内部资源,包括配置 VPC 的能力,因此我能够在 lambda 中使用标准 HTTP 客户端 API 来代理对后端资源的调用。

【讨论】:

  • 我正在尝试实现类似但不编写 Lambda。我们的 AWS 账户使用 Direct Connect 连接到 Corporate n/w。我创建的 APIG 终端节点是使用 VPC Endopint for APIG 的私有终端节点。 VPCE 位于私有子网中,并且具有已打开允许端口的安全组,但我仍然无法连接。我也尝试使用 Route 53 出站解析器连接到我们公司的内部 DNS 服务器,但这也不起作用。
  • @Annjawn 我对您使用的技术不够熟悉,无法做出有意义的回答。在我原来的问题下用 cmets 回答的人可能比我更有机会回答你的问题。考虑在我的问题下问你的问题,因为他们可能没有监控这个答案。
  • 听起来像一个昂贵的解决方案。
  • 我遇到了和你一样的情况@AnBisw,你找到解决办法了吗?我正在尝试连接公共子网中的 ALB,但从连接到 VPCE 的私有 API 网关仅供内部使用。想知道你是否能够解决?
猜你喜欢
  • 1970-01-01
  • 2018-11-13
  • 1970-01-01
  • 1970-01-01
  • 2022-06-22
  • 2020-02-22
  • 1970-01-01
  • 2017-04-07
  • 1970-01-01
相关资源
最近更新 更多