将 Lambda 输出映射到 API 网关 header

Mapping Lambda output to API Gateway header

我正在尝试将 Lambda 函数的 JSON 输出映射到 API 网关调用的 header。作为此处的示例,我们可以考虑重定向场景。所以我想在 API 网关调用的响应中添加 Location header。

JSON Lambda 函数的输出:

{
    Location: 'http://google.com'
}

在 "Method Response"->"Response Headers" 中,我可以将 Location header 添加到所需的 HTTP 状态代码。

然后在 "Integration Response"->"Header Mappings" 中,我可以将 Location header 的映射添加为 某物

现在我的问题是这个东西应该是什么?

注意:我已尝试 integration.response.header.Location,或使用 "Mapping Templates",但到目前为止没有成功。

目前可能不可能 (https://forums.aws.amazon.com/thread.jspa?messageID=651482),但由于 API Gateway/Lambda 目前发展如此之快,我还是会问的。

实际上,您似乎可以访问原始响应提供的所有 header(如果它包含 Content-type,那么您可以输入:integration.response.header.Content-type)。但是,我还没有找到添加新 header 的任何方法(静态除外)。

来自今天(2015 年 9 月 25 日)的 AWS 开发人员论坛,这还不可能,但将来可能会实现:

API Gateway does not currently support mapping from the integration response body to the response headers, but we are looking to add support for this in the future.

Forum post here

2015 年 12 月编辑:AWS 员工根据 post 在上面链接的线程中添加的功能。感谢 Peter Fox 指出这一点。

今天(2​​015 年 11 月 12 日),我正在寻找如何将位置 header 从我的后端 API 传递到集成响应中的位置 header。

此配置有效,我可以从后端 api:

获取位置 header

看来 Tobias 提出的解决方案目前是可行的。但是,Location header 指向后端 API,这不是我们想要的。我会尝试为此找到解决方案,post 在这里。

截至今天(2016 年 1 月),它只需在您的案例中指定 integration.response.body.Location 即可工作。

我知道有人问这个问题已经有一段时间了,但您现在可以设置:

integration.response.header.Location(注意 Location 中的大写 L)如果您在响应 headers.

中设置映射值

Example