问题陈述: - 无法使用AWS网关/ Lambda设置流式传输PDF。
我按照设置进行操作: -
网关API - > Lambda函数(java) - > S3
Api应该通过Lambda从S3服务器将PDF流回客户端。
我无法这样做。
尝试过的事情
我已经尝试过这些的所有排列/组合2.但是,我无法让它工作,并且这方面的文档似乎很差。
当我在Lambda中设置Base64编码时,在网关端将内容处理指定为转换为二进制,我得到错误,无法使用Base64解码。 对于其他组合,当我使用网关测试功能测试时,我将二进制数据作为输出,但是我的客户端(邮差,Chrome,Safari)无法将其转换为PDF
注意: - 我有一个解决方法,我在其中创建一个signedURL到S3对象,并将其作为重定向发送。但是,我试图通过使用Lambda流式传输二进制文件来使其工作。
感谢您阅读这么长的帖子。任何指针,正确方向的链接都非常受欢迎。
- 令人沮丧的AWS用户: - )
答案 0 :(得分:0)
我在尝试提供gzip压缩内容方面遇到了类似的问题:客户端 - > API-Gateway - > S3。
我无法弄清楚为什么我提取的内容无法被客户端(浏览器或代码)识别,直到我检查了标头(二进制标头,而不是http)。 看来API Gateway默认采用基于字符串的编码(utf-8),所以我看到的是API Gateway正在进行转换并在各个地方添加utf-8头的数据。
去年年底,API Gateway开始支持二进制有效负载。我开始阅读这篇文章,这可能对你的情况有所帮助。它不是我的,但你的用例略有不同,更接近文章所以它可能。
https://aws.amazon.com/blogs/compute/binary-support-for-api-integrations-with-amazon-api-gateway/
至于我最终做了什么...我意识到我只是使用API网关作为一个直通(利用我已经设置的基于Cognito的身份验证)所以我一起绕过了API网关并使用了aws js sdk直接连接到s3(并分别在存储桶上设置IAM策略)