我如何在API网关中创建一个模拟集成来接受请求:
/products/{product}/bigFile.zip?platform={platform}&version={version}
并重定向到:
http://xyz.cloudfront.net/{product}/{platform}/{version}.zip
我尝试过更改请求和响应映射模板,但我不确定它们是如何连接的,因为关于模拟集成的AWS文档非常稀疏。我可以更改HTTP状态代码,但无法根据查询参数填充Location
标头。
更广泛的背景(如果我已经解决了XY问题)是,我正在使用AWS API网关构建一个API。其中一个API端点提供的大型文件无法满足API网关的10s响应时间限制,因此我想重定向到另一个CDN链接。
对于MOCK集成,请考虑Integration Request模板,该模板将状态代码(例如{"statusCode":200})定义为后端的模拟状态代码。除此之外,其他组件都是相同的。您必须为重定向3xx状态代码定义一个方法响应,并在响应中包含要发送的任何标头。然后在Integration Response页面上,您可以使用单引号将标题的值设置为静态值。因此,无论重定向URL是什么,都可以在这里定义Location标头,比如"https://other.endpoint.com'
编辑:使用Lambda函数回声的解决方案
设置Lambda函数以回声有效载荷。接下来将querystring映射到请求主体,如下所示:
模板:
{
"q": $input.params('foo')
}
假设Lambda函数回显相同的有效载荷,您可以将Integration Response中的标头映射源设置为:
integration.response.body.q