如何使AWS api网关接受http而不是https

Fra*_*Luo 15 amazon-web-services aws-lambda aws-api-gateway

我有一个由API网关代理的Lambda函数.但是,API网关仅公开http s而不公开http.我到处搜索,但看起来像API网关是不可能接受http.

所以我的问题是如何将http客户端调用转换为https并发送到api网关?我问,因为我的客户端只能进行http调用,他们不会改变.

Flo*_* B. 17

您可以将Cloudfront分发放在API Gateway前面,并进行以下设置:

  • 原始协议策略:仅限HTTPS
  • 查看器协议策略:HTTP和HTTPS
  • 前向标题:无
  • 对象缓存:使用原始缓存标头


Ale*_*ong 11

CloudFront是一种快速的解决方案,因为与实例化Elastic Beanstalk相比,它的设置要容易得多。

我花了几个小时来尝试解决这个问题,所以只分享一些不错的文章和一个温柔的提醒:

  1. Smartcam项目利用Amazon API GatewayCloudFront,详细描述了设置过程。
  2. 亚马逊文档中给出的官方示例演示了如何使用查询字符串参数(例如/search?keyword=mars&...)、JSON有效负载和加路径参数创建GET和POST方法。必读!
  3. 个人2美分:
    • 如果使用查询字符串参数,请确保编辑行为 云面板然后选择全部转发,在“ 查询字符串转发和缓存”全部缓存查询字符串转发选择
    • 或者,阅读此文档以了解另外两种可能的配置。
    • 如果您已经将Origin Path设置为您的阶段变量(默认值/prod:),那么在调用CloudFront域时/prod,只需跳过即可xxxx.cloudfront.net/resource1/resource2?param1=...&param2=..原始路径截图

  • 是的,它有效。只是,如果您在 api gateway 中使用自定义域,该网关会自动为您创建一个 cloudfront 发行版,您将无法在此自动创建的发行版中进行此类自定义更改。 (2认同)

sol*_*ium 8

我最近与AWS代表进行了长达4小时的电话通话,了解我们在生产阶段遇到的类似问题.我的情况类似,在APIGateway中我们无法改变它来解决它(代表尝试各种技巧,但似乎没有任何工作).因此,我们的结论是将EC2实例作为APIGateway的代理服务器并转发所有流量.还有一些额外的工作,比如转移域名,但总的来说它运作得很好.在您的情况下,因为您只需要重定向HTTP流量,一个简单的ElasticBeanstalk代理应用程序可能就足够了(EB默认使用HTTP并且位于Nginx代理服务器之后).