API网关代理

时间:2017-12-12 00:37:11

标签: amazon-web-services amazon-s3 proxy aws-api-gateway

我尝试创建一个AWS API网关代理,它将传递任何HTTP谓词作为' GET'到目标服务器(因为它是出于特定目的而需要)。

文本和JSON文件的传输没有问题,但所有图像都被破坏了。

似乎API网关代理以某种方式截获并损坏了二进制/图像数据。

是否有一些特定配置允许我传递图像?

3 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

您必须将希望被视为二进制的MIME类型添加到API设置下的Binary Media Types列表中。

您还必须确保您的响应content-type和请求accept标头不冲突。

  

如果未定义contentHandling,并且响应的Content-Type标头和原始请求的Accept标头与binaryMediaTypes列表的条目匹配,则API Gateway会通过正文。当Content-Type标头和Accept标头相同时,会发生这种情况。否则,API Gateway会将响应主体转换为Accept标头中指定的类型。

摘录自API Gateways docs

答案 2 :(得分:-1)

从Lambda下载图像文件(image.jpg)作为二进制blob

GET /v1/s3?key=image.jpg HTTP/1.1 Host: abcdefghi.execute-api.us-east-1.amazonaws.com Content-Type: application/json Accept: application/octet-stream

从Lambda下载图像文件(image.jpg)作为Base64编码的字符串,格式为作为JSON属性

GET /v1/s3?key=image.jpg HTTP/1.1 Host: abcdefghi.execute-api.us-east-1.amazonaws.com Content-Type: application/json Accept: application/json

另请查看此AWS Blog Post