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