通过API网关AWS Service Proxy

时间:2016-06-07 05:04:11

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

在标题中,我似乎无法使其发挥作用,我正在遵循详细的here高级指南,但上传的所有图片似乎都是空白的。

我设置的内容:

/images/{object} - PUT
 > Integration Request
   AWS Region: ap-southeast-2
   AWS Service: S3
   AWS Subdomain [bucket name here]
   HTTP method: PUT
   Path override: /{object}
   Execution Role [I have one set up]
 > URL Path Paramaters
   object -> method.request.path.object

我试图使用Postman发送带有Content-Type:image / png的PUT请求,并且正文是png文件的二进制上传。

我也尝试过使用curl:

curl -X PUT -H "Authorization: Bearer [token]" -H "Content-Type: image/gif" --upload-file ~/Pictures/bart.gif https://[api-url]/dev/images/cool.gif

它在服务器上创建文件,大小似乎是上传的两倍,当我查看时,我刚刚得到"图片有错误"。

当我尝试使用.txt文件(content-type:text / plain)时,它似乎可以正常工作。

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

在阅读很多并与AWS技术支持人员聊天后,问题似乎是您无法通过API网关进行二进制上传,因为任何通过的内容都会自动通过UTF-8编码

我可以想到一些解决方法,我的解决方案是在上传之前将文件作为base64,并在它们点击桶时触发lambda来解码它们

答案 1 :(得分:0)

这是一篇老帖子,但我得到了一个解决方案。 AWS现在支持通过APIGateway READ进行二进制上传。

通常,请转到您的API设置,然后添加二进制媒体类型。

之后,您可以在base64中处理该文件