使用API​​网关作为HTTP代理与URI(请求路径+变量查询参数)传递

使用API​​网关作为HTTP代理与URI(请求路径+变量查询参数)传递

问题描述:

我想要做一些不同的基本路由与API网关。 我需要实现以下情形:使用API​​网关作为HTTP代理与URI(请求路径+变量查询参数)传递

  • 用户发出请求xxxx-execute-api.eu-west-1.amazonaws.com/prod/ API1 /a/b/../n?参数1 = VAL1 & parma2 = VAL2 ... & paramn = VALN的请求应该去API1 .back.end/A/b /../ N'参数1 = VAL1 & parma2 = VAL2 ... & paramn = VALN

  • 用户提出请求xxxx-execute-api.eu-west-1.amazonaws.com/prod/ api2 /a/b/../n?param1=val1 & parma2 = val2 ... & paramn = valn请求应该去api2 .back.end/a/b /../ n?param1 = val1 & parma2 = val2 ... & paramn = valn

  • user make request xxxx-execute-api.eu-west-1.amazonaws.com/prod/*****/a/b/../n ?参数1 = VAL1 & parma2 = VAL2 ... & paramn = VALN的请求应该去API3 .back.end/A/b /../ N'参数1 = VAL1 & parma2 = VAL2 ... & paramn = VALN

路由应该基于阶段后的第一个路径索引完成,并且之后的所有内容都应该传递到http后端(如透明代理)。

换句话说,如果路径索引1为API1,转发请求API1 .back.end与完整的URI路径索引1之后;如果路径索引1是api2,则转发请求到api2。后缀与路径索引1后的完整URI;如果路径索引1是其他任何内容比显式值api1或api2,转发请求到api3 .back.end具有完整的URI后的路径索引1;

我会如何实现这一点,而无需添加任何额外的图层(lambda,cloudfront,ec2等)?

谢谢!

API网关今天不支持此用例;每个方法和路径必须在您的API定义中明确定义。

支持这样的直通代理是我们从其他客户那里听到的一个请求,我们可能会考虑在将来对服务进行更新时支持它。

更新09/20/2016:我很高兴地宣布,我们已经推出了一组功能以允许如上所述的代理请求。有关更多详情,请参阅我们的announcement

+0

虽然不理想,但您可以在Lambda中执行此路由/重定向,难道你不能?通过返回一个重定向或代理一个呼叫到目标服务器,或许? – ericpeters0n

+0

@ ericpeters0n API网关仍然需要支持变量或“贪婪”资源路径,但它不需要。目前,您需要在API网关定义中定义每个资源/方法,并将其映射到集成(例如Lambda)。 –