由API网关触发的AWS Lambda上的二进制数据

时间:2019-01-10 14:22:22

标签: python amazon-s3 aws-lambda postman aws-api-gateway

我知道有关此主题的几个类似问题,但是我还没有找到确切的问题。如果有一个,请原谅我,请给我发送链接:-)

我有一个由API网关触发的lambda函数,它返回图像/ tiff文件的base64编码的字符串。

我编辑了API网关配置,以便将字符串转换回二进制数据。

如果我直接在AWS功能上进行了所有测试,则二进制图像代码(.tiff文件)将正确显示。

It works!

但是,如果我通过Postman对其进行测试,则下载的文件仍然包含base64编码的字符串,需要对其进行解码。因此,我不能直接从API下载文件,而必须在客户端进行一些转换,对吧?

enter image description here

这是我通过邮递员从我的API收到的标头: enter image description here

我也添加了Accept标头:image/tiff

我的python lambda后端返回看起来像这样: return base64.b64encode(binary_data).decode('ascii')

为什么它会在AWS控制台上转换为二进制数据,而不通过Postman(或curl)转换为二进制数据?我有点迷路。这是我的集成响应设置: enter image description here

最后,我想通过无服务器设置所有这些设置,但是我已经很高兴可以通过Web前端使其运行并稍后迁移到无服务器。

预先感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

这不是问题的直接答案,而是更多解决方法:

我们通过生成一个预签名的url并从那里显示二进制数据来解决此问题。就像魅力一样。