我想使用 AWS API 网关作为从 S3 存储桶中获取文件并将它们返回给客户端的代理。我正在使用 Lambda 函数与 S3 通信并通过 AWS API 网关将文件发送到客户端。我认为最好的方法是使用“Lambda 代理集成”,这样整个请求无需任何修改就可以通过管道传输到 Lambda。但是,如果我这样做,则无法为来自我的 Lambda 函数的结果响应设置集成响应。所以客户端得到的只是 JSON。
似乎 API 网关应该有一种方法来获取 JSON 并将请求转换为客户端的正确响应,但我似乎无法弄清楚如何实现这一点。有很多示例指向手动设置来自 API 网关的响应的内容类型,但我需要将内容类型标头设置为任何文件类型。
同样对于图像和二进制格式,我的 Lambda 函数返回一个 base64 编码的字符串,并且属性isBase64Encoded设置为true. 当我转到“二进制支持”部分并指定类似image/*应作为二进制返回的内容类型时,它不起作用。我只有通过将二进制支持内容类型设置为*/*(也称为所有内容)才能成功,这对非二进制内容类型不起作用。
我错过了什么,为什么这看起来如此困难?
lambda content-type amazon-web-services aws-lambda aws-api-gateway