使用 API 网关作为带有 uri(请求路径+可变查询参数)直通的 http 代理
Use API Gateway as http proxy with uri (request path+variable query params) passthrough
我正在尝试使用 API 网关进行一些不同的基本路由。
我需要实现以下场景:
用户发出请求 xxxx-execute-api.eu-west-1.amazonaws.com/prod/api1/a/b/../n?param1=val1&parma2=val2...¶mn=valn 请求应该转到 api1.back.end/a/b/../ n?param1=val1&parma2=val2...¶mn=valn
用户发出请求 xxxx-execute-api.eu-west-1.amazonaws.com/prod/api2/a/b/../n?param1=val1&parma2=val2...¶mn=valn 请求应该转到 api2.back.end/a/b/../ n?param1=val1&parma2=val2...¶mn=valn
用户发出请求 xxxx-execute-api.eu-west-1.amazonaws.com/prod/*****/a/b/.. /n?param1=val1&parma2=val2...¶mn=valn 请求应该转到 api3.back.end/a/b/../n?param1=val1&parma2= val2...¶mn=valn
路由应该根据阶段后的第一个路径索引完成,之后的所有其他内容都应该传递给 http 后端(如透明代理)。
换句话说,如果路径索引 1 是 api1,则将请求转发到 api1。back.end 之后带有完整的 URI路径索引 1;如果路径索引 1 是 api2,则将请求转发到 api2.back.end,并在路径索引 1 之后使用完整的 URI;如果路径索引 1 是 任何其他 而不是显式值 api1 或 api2,则将请求转发到 api3.back.end 并在路径后使用完整的 URI指数 1;
如何在不添加任何额外层(lambda、cloudfront、ec2 等)的情况下实现这一目标?
谢谢!
API 网关今天不支持这个用例;每个方法和路径都必须在您的 API 定义中明确定义。
支持此类直通代理是我们从其他客户那里听到的请求,我们可能会考虑在未来的服务更新中支持它。
2016 年 9 月 20 日更新:我很高兴地宣布,我们已经推出了一组功能来允许代理上述请求。有关详细信息,请参阅我们的 announcement。
我正在尝试使用 API 网关进行一些不同的基本路由。 我需要实现以下场景:
用户发出请求 xxxx-execute-api.eu-west-1.amazonaws.com/prod/api1/a/b/../n?param1=val1&parma2=val2...¶mn=valn 请求应该转到 api1.back.end/a/b/../ n?param1=val1&parma2=val2...¶mn=valn
用户发出请求 xxxx-execute-api.eu-west-1.amazonaws.com/prod/api2/a/b/../n?param1=val1&parma2=val2...¶mn=valn 请求应该转到 api2.back.end/a/b/../ n?param1=val1&parma2=val2...¶mn=valn
用户发出请求 xxxx-execute-api.eu-west-1.amazonaws.com/prod/*****/a/b/.. /n?param1=val1&parma2=val2...¶mn=valn 请求应该转到 api3.back.end/a/b/../n?param1=val1&parma2= val2...¶mn=valn
路由应该根据阶段后的第一个路径索引完成,之后的所有其他内容都应该传递给 http 后端(如透明代理)。
换句话说,如果路径索引 1 是 api1,则将请求转发到 api1。back.end 之后带有完整的 URI路径索引 1;如果路径索引 1 是 api2,则将请求转发到 api2.back.end,并在路径索引 1 之后使用完整的 URI;如果路径索引 1 是 任何其他 而不是显式值 api1 或 api2,则将请求转发到 api3.back.end 并在路径后使用完整的 URI指数 1;
如何在不添加任何额外层(lambda、cloudfront、ec2 等)的情况下实现这一目标?
谢谢!
API 网关今天不支持这个用例;每个方法和路径都必须在您的 API 定义中明确定义。
支持此类直通代理是我们从其他客户那里听到的请求,我们可能会考虑在未来的服务更新中支持它。
2016 年 9 月 20 日更新:我很高兴地宣布,我们已经推出了一组功能来允许代理上述请求。有关详细信息,请参阅我们的 announcement。