【发布时间】: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