我需要从Amazon Lambda Java函数向Amazon Rest API返回PNG。我已经用这样一个函数原型构建了这个函数:
public static void generatePng(InputStream request, OutputStream response, Context context)
InputStream请求详细说明了需要写入图像的信息。OutputStream响应是返回的内容,是一个png图像。我已经测试了代码,并且知道编码到输出流中的图像是正确的,因为我的测试将其写入到我可以在图像编辑器中看到的文件中。
我遇到的问题是Lambda函数到API网关的响应连线。文档只讨论字符串响应,但我的响应负载是二进制图像数据。
在Lambda集成响应中,我尝试添加以下的头映射:
Content-Length integration.response.header.Content-Length
内容类型集成.response.header.Content-Type
以及身体映射:内容类型:image/png,模板为$input.body
我还在方法响应部分添加了image/png的响应模型。
在测试API时,对API调用的响应没有显示图像,而是以正确的png标题开始的图像的字符串转储:
例如:响应体
?PNG
IHDR?
??~LIDATx? ...
响应标头确实显示:{"内容类型":"image/png"}
有人知道如何配置Amazon API网关以接受图像作为lambda函数调用的输出并将其正确地呈现回调用方吗?
API网关不支持二进制数据-https://forums.aws.amazon.com/search.jspa?objID=f199&q=二进制&x=0&y=0.
您可以考虑在映射模板中使用base64编码/解码功能。链接