ryn*_*nop 7 amazon-web-services aws-lambda aws-api-gateway
我正在使用API Gateway Lambda代理集成,并尝试返回二进制application/protobuf响应。无论我做什么,响应正文始终是base64编码的字符串
application/protobuf设置为binary media typesPOST:
Accept: application/protobuf
Content-Type: application/protobuf
content-type: application/protobuf的IsBase64EncodedLambda响应,并将Lambda响应正确设置为true如何使APIG对base64解码字符串?我发誓几个月前我第一次尝试这个功能时,我已经做到了。
注意:我也尝试*/*过binary media types
一些相关的帖子添加背景:
更新:
事实证明,只有将binary media type设置为,我才能使它工作*/*。客户端Accept标头设置为此不会产生任何影响。
*/*由于尝试对每个响应进行解码(即使IsBase64Encoded为false或未设置),使用也会带来很多不良影响
我认为它没有解码,因为Chrome网络检查工具将始终在Preview选项卡中将二进制数据显示为base64编码。您可以在Response标签中看到protobuf 。
问题是我在API Gateway之前使用CloudFront,并且没有将Accept标头传递给源(APIG)。
使用Lambda代理处理二进制文件的文档不是很好,所以这里是一个简短的摘要:
Accept标头的第一种媒体类型与您binary media types在API网关中设置的标头相匹配IsBase64Encoded为true,并且body必须使用base64编码如果客户端Accept标头与API Gateway中的条目匹配binary media types并且满足这些条件,则API Gateway将在发送响应到客户端之前进行转换(base64解码)。
这篇博客文章将逐步指导您如何使其工作(不使用CloudFront)。
这是完整的AWS蓝图,可通过CloudFront获得生产级ci / cd。
| 归档时间: |
|
| 查看次数: |
2151 次 |
| 最近记录: |