AWS API Gateway:使用模拟集成进行重定向

时间:2016-07-28 18:50:11

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

如何在API网关中创建模拟集成以接收请求:

/products/{product}/bigFile.zip?platform={platform}&version={version}

并通过重定向回复:

http://xyz.cloudfront.net/{product}/{platform}/{version}.zip

我已尝试更改请求和响应映射模板,但我不确定它们是如何连接的,因为有关模拟集成的AWS文档非常稀疏。我可以更改HTTP状态代码,但我无法根据查询参数填充Location标头。

更广泛的背景(如果我已经提交了XY问题)是我正在使用AWS API Gateway构建API。其中一个API端点提供的大型文件无法满足API网关的10s响应时间限制,因此我想重定向到另一个CDN链接。

1 个答案:

答案 0 :(得分:2)

对于MOCK集成,请考虑将定义状态代码的Integration Request模板(例如{“statusCode”:200})作为后端的模拟状态代码。排除这方面,其他组件是相同的。您必须为重定向3xx状态代码定义方法响应,并包括您要在响应中发送的任何标头。然后在Integration Response页面上,您可以使用单引号将标头的值设置为静态值。因此,您可以使用重定向网址定义Location标头,例如“https://other.endpoint.com

编辑:使用Lambda函数echo

的解决方法

设置Lambda函数以回显有效负载。接下来将查询字符串映射到请求主体,如下所示:

模板:

{
  "q": $input.params('foo')
}

假设Lambda函数回显相同的有效负载,您可以将Integration Response中的头映射源设置为:

integration.response.body.q