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

Eri*_*ric 6 amazon-web-services aws-api-gateway

如何在 API Gateway 中创建模拟集成以接受请求:

/products/{product}/bigFile.zip?platform={platform}&version={version}
Run Code Online (Sandbox Code Playgroud)

并重定向响应:

http://xyz.cloudfront.net/{product}/{platform}/{version}.zip
Run Code Online (Sandbox Code Playgroud)

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

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

Jac*_*AWS 2

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

编辑:使用 Lambda 函数 echo 的解决方法

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

模板:

{
  "q": $input.params('foo')
}
Run Code Online (Sandbox Code Playgroud)

假设 Lambda 函数回显相同的负载,您可以将集成响应中的标头映射源设置为:

integration.response.body.q
Run Code Online (Sandbox Code Playgroud)